-
Notifications
You must be signed in to change notification settings - Fork 0
Add S3Uploader-Multipart module with pause/resume/recovery support #62
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
Merged
projectdelta6
merged 19 commits into
main
from
featiure/S3Uploader-pause-resume-recover
Jan 20, 2026
Merged
Add S3Uploader-Multipart module with pause/resume/recovery support #62
projectdelta6
merged 19 commits into
main
from
featiure/S3Uploader-pause-resume-recover
Jan 20, 2026
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Implements AWS S3 Multipart Upload API with: - Room database persistence for upload state - WorkManager integration for background uploads - Pause, resume, and recovery capabilities - Progress tracking with Flow-based observation Also adds BaseRepo-S3Uploader-Multipart extension module and updates BOM, READMEs, and version catalog. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
S3Uploader now stores the custom logger and exposes it via getCustomLogger(). MultipartUploadManager.syncLoggerConfig() syncs the logger configuration from S3Uploader, called automatically when getInstance() creates the manager and at the start of WorkManager workers. This allows apps to call S3Uploader.initS3Uploader() once and have both modules use the same logger configuration. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Creates BuildConfig.kt in buildSrc with centralized constants for: - TOOLBOX_VERSION - Sdk.COMPILE and Sdk.TARGET - MinSdk constants for each module category Updates all build.gradle.kts files to use BuildConfig constants instead of libs.versions references. Updates UpdateReadmeVersions.kt to read toolbox version from BuildConfig. This centralizes version management and makes it easier to update values in one place. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add @ConsistentCopyVisibility to SnackBarVisualsWithType data class to fix Kotlin copy() visibility warning (will be error in Kotlin 2.5) - Configure Room Gradle plugin for S3Uploader-Multipart schema export - Add foregroundServiceType to S3Uploader-Multipart manifest for WorkManager - Add Room plugin to version catalog - Update all README versions to 1.2.0-beta02 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added NullableEnumAsIntSerializer and NullableEnumAsStringSerializer
…ploader-Multipart - Support both wrapped and unwrapped JSON response formats in InitiateMultipartResponse, PresignPartResponse, and CompleteMultipartResponse - Add EmptyArrayAsEmptyMapSerializer to handle "headers": [] responses - Implement parallel part uploads using coroutines with configurable maxConcurrentParts - Fix race condition in parallel uploads by marking parts as UPLOADING immediately - Add crash recovery: change IN_PROGRESS sessions to PAUSED before resuming - Add debug logging for recovery process - Add "Simulate Crash" button to demo app for testing recovery functionality Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace hardcoded email/password with user input fields: - Add email/password state and setters in ViewModel - Add OutlinedTextField inputs in AuthSection composable - Add validation to require both fields before login Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Dependency updates: - AGP 8.13.2 → 9.0.0 - Kotlin 2.3.0 → 2.2.10 - Compose BOM 2025.12.01 → 2026.01.00 - FlexiLogger 1.36.4 → 2.0.0 (migrated from JitPack to Maven Central) S3 Multipart improvements: - Add reset() function to MultipartRetrofitClient for config changes - Improve logging levels (BODY for verbose, HEADERS for debug) - Add pretty print JSON when verbose logging enabled Demo app: - Add multipart upload screen to navigation - Consolidate TestBackend network layer - Add INTERNET permission to manifest Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Expand the Backend Requirements section into a full API specification that external developers can use to implement the required endpoints. Includes request/response schemas, JSON examples, authentication details, error handling, CORS configuration, and a sequence diagram. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add UploadNotificationProvider interface for custom notifications - Add UploadLifecycleCallbacks interface with hooks: - onBeforeUpload (before S3 interaction, can abort) - onUploadComplete, onUploadPaused, onUploadResumed - onProgressUpdate - Add DefaultUploadNotificationProvider configurable implementation - Make MultipartUploadWorker implement UploadLifecycleCallbacks - Add notificationProvider and lifecycleCallbacks to MultipartUploadConfig - Add UploadConstraints for per-upload WorkManager constraints - Update demo app with lifecycle callback examples - Bump version to 1.2.0-beta05 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace fold() with explicit if/else for kotlin.Result conversion - Handle MultipartUploadResult properly in startMultipartUpload - Add toUnitAPIResult helper for pause/resume/cancel operations Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…laiming - Add claimNextPendingPart() DAO method with @transaction for atomic SELECT+UPDATE, preventing potential race conditions - Remove deprecated scheduleUpload(requiresNetwork, requiresCharging) from S3UploadWorkManager - use UploadConstraints parameter instead - Remove deprecated autoResumeOnNetworkRestore property from MultipartUploadConfig - use defaultConstraints.autoResumeWhenSatisfied - Add scheduleMultipartUploadWork(UploadConstraints) overload to BaseRepo extensions for full constraint support - Update boolean-parameter overload to use UploadConstraints internally - Bump version to 1.2.0 and update all README version references Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
S3Uploader-Multipartmodule implementing AWS S3 Multipart Upload API for large file uploads with:BaseRepo-S3Uploader-Multipartextension module for BaseRepo integrationbuildSrc/BuildConfig.ktfor centralized version managementChanges
S3Uploader-Multipart,BaseRepo-S3Uploader-MultipartBuildConfig.ktwithTOOLBOX_VERSION,Sdk, andMinSdkconstantsbuild.gradle.ktsfiles to use BuildConfig constantsUpdateReadmeVersions.ktto read version from BuildConfigTest plan
1.2.0-beta01🤖 Generated with Claude Code