Skip to content

Conversation

muratbilir
Copy link
Collaborator

Modernization and Feature Enhancements

This branch introduces a series of significant updates and refactorings aimed at modernizing the application's dependencies, improving user experience, and streamlining the development workflow.

Key Highlights:

  • Dependency Overhaul: We've extensively updated core libraries including Kotlin (2.2.0), Ktor (3.1.2), Compose (1.7.3), Voyager (1.0.1), and Koin (4.0.4), along with numerous other dependencies like kotlinx-coroutines, kotlinx-serialization, and AndroidX libraries. This ensures we're leveraging the latest features, performance improvements, and security fixes. The Gradle wrapper has also been updated to 8.12.1.

  • Material 3 Adoption: The UI has been fully refactored to utilize Material 3 components, bringing a fresh, modern look and feel to the application while aligning with the latest Android design guidelines.

  • Enhanced Sharing Functionality: The sharing feature has been significantly improved. It now supports rich content sharing (title, description, and image URL) and implements platform-specific sharing for both Android and iOS, including image sharing.

  • Predictive Back Gesture: We've integrated predictive back gesture functionality using PredictiveBackHandler and custom screen transitions. This provides a smoother and more intuitive navigation experience, particularly on Android devices supporting this feature. Custom iOS swipe gesture handling has been removed in favor of this new approach.

  • Compose Previews: To accelerate UI development and debugging, Compose previews have been added to all screens. This allows developers to visualize UI components in isolation, leading to faster iterations.

  • Development Workflow Improvements:

    • Compose Hot Reload has been added, along with a desktop target, to further enhance the development experience.
    • Android permission checking has been optimized using LifecycleEventEffect.
    • The project now fully utilizes Kotlin Multiplatform's native dependency management, leading to the removal of the Podfile and related configurations from the iOS project.

These changes collectively represent a substantial step forward in the application's architecture, maintainability, and user experience.

This commit includes several updates and changes:

- Updated Kotlin to 2.1.20
- Updated Ktor to 3.1.2
- Updated Compose to 1.7.3
- Updated Voyager to 1.0.1
- Updated Koin to 4.0.4
- Removed Moko Resources references
- Updated other dependencies such as kotlinx-coroutines, kotlinx-serialization, kotlinx-datetime, Android Gradle Plugin, desugar_jdk_libs, AndroidX libraries, Seiko Image Loader, KVault, Maps Compose, and Play Services Location.
- Replaced `ImageResult.Image.toImage()` extension function with direct access to the image property.
- Updated Gradle wrapper to version 8.12.1.
- Added `nsexception-kt` for handling unhandled exceptions on iOS.
- Changed the shell script for building Kotlin code in Xcode to use zsh and load environment variables.
- Updated various configurations and settings in the iOS project (iosApp/iosApp.xcodeproj/project.pbxproj).
- Removed the Podfile and related configurations as the project now uses Kotlin Multiplatform's native dependency management.
- Updated the permission checking logic on Android to use `LifecycleEventEffect` for improved efficiency.
- Replaced `androidx.compose.material` components with `androidx.compose.material3` equivalents across the project.
- Updated some build configurations.
- This addition requires adding a desktop target to application. Because of that, settings and webview implementation need to be updated.
- The old back handling system is changed with official multiplatform library
- Some dependencies are updated.
- Implemented predictive back gesture functionality using `PredictiveBackHandler` and custom screen transitions for a smoother user experience.
- Removed the custom swipe gesture handling in iOS and the associated `Store` utility class.
- Updated various library dependencies to their latest versions, including Compose, Voyager, Koin, and others.
- Enabled `enableOnBackInvokedCallback` in the AndroidManifest for API 33 and above.
- Removed explicit `BackHandler` composables from individual screens as back navigation is now handled by the navigator and predictive back gesture.
This commit introduces several improvements to the sharing feature:

- Updated the `share` function to accept `title`, `description`, and `imageUrl` parameters for richer sharing content.
- Implemented platform-specific sharing for Android and iOS, including image sharing.
- Updated Kotlin version to 2.2.0.
- Removed unused `Holder` object from iOS main.

The share functionality in movie and TV detail screens now utilizes the enhanced `share` function, allowing users to share titles, overviews, and posters.
This commit introduces Compose previews to all screens within the application.
This enhancement improves the development workflow by allowing developers to visualize UI components in isolation, facilitating faster iteration and easier debugging.

Key changes:
- Added `@Preview` annotations to composable functions in various screen files.
- Made some internal composable functions private to encapsulate preview logic.
- Utilized `LocalInspectionMode` in `rememberPermissionState` to provide a fake permission state for previews.
- Added a placeholder painter to `PosterImageItem` for better preview rendering.
@muratbilir muratbilir requested a review from mutkuensert June 30, 2025 09:16
The Gradle version used in the GitHub Actions workflow has been updated from 8.4 to 8.14.2.

Additionally, the steps for setting up Cocoapods and building the xcworkspace using `gradle podInstall` have been removed from the iOS build process.
The Gradle version used in the GitHub Actions workflow has been updated from 8.4 to 8.14.2.

Additionally, the steps for setting up Cocoapods and building the xcworkspace using `gradle podInstall` have been removed from the iOS build process.
@muratbilir muratbilir force-pushed the feature/modernization branch 2 times, most recently from 0adf4dc to 67e69d8 Compare June 30, 2025 15:24
@muratbilir muratbilir force-pushed the feature/modernization branch from 67e69d8 to e4c942a Compare June 30, 2025 15:27
@muratbilir muratbilir merged commit 4e33a85 into develop Jul 21, 2025
2 checks passed
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