KNUTICE Android 1.7.1 Release#101
Merged
Merged
Conversation
- Resolve identified UX issue on saving notice attachments. (Saving/Fetching delay)
* Provide explicit, isolated folder for attachments downloaded via KNUTICE application. Destination Path would be: Downloads/KNUTICE/...
- Identify the fundamental reason for the issue: Incorrectly processed filename, which is UTF-8 encoded, and unresolved MIME type, especially for the Korean-specific .hwp extension.
* Modify and improve DownloadManager and DownloadListener logic to correctly process
1. UTF-8 Encoded Filename
2. Aggressively resolve mimetype of the selected attachment to be downloaded.
* Add necessary Contracts to provide appropriate feedback to the user.
* Add necessary localized string resource to be displayed via Toast Message.
[REFACTOR] Resolve UX Issue on saving notice attachments
- Enhance Tip Container visibility and Design on HomeDashboard screen for better UX and easy access to the Tip Contents.
* Enable Skeleton Loading Animation to TipContainer to ensure fixed area of the Tip Container on HomeDashboard Screen until the fetching result is available.
* Minor Design Fix to ensure overall theme consistency.
* Remove unnecessary code (TipContainer Composable)
- Enhance Tip Container visibility and Design on HomeDashboard screen for better UX and easy access to the Tip Contents.
* Add missing condition to Click Listener to prevent potential app crash if user clicked the container while tip information is not yet fully loaded.
- Allow Dagger to manage Local AppPreferenceRepository as a Singleton instance, exposing its accessibility via interface in :domain module (Dependency Inversion)
* Refactor AppPreference to AppPreferenceRepository and its Implementation.
* Necessary Dependency has been provided via LocalPreferenceModule with @singleton Annotation.
- Decentralize 'RemoteRepositoryImpl' into three independent Repositories.
1. RemoteContentRepositoryImpl
2. RemotePreferenceRepositoryImpl
3. RemoteTokenRepositoryImpl
* Necessary directory structure modification has been performed.
- Provide dependency of AppPreferenceRepository instance as a Singleton.
* Dependency is provided via Component-Dependency between AppComponent and each SceneComponents.
- Replace legacy 'AppPreference' dependency to updated 'AppPreferenceRepository'
- Add necessary library dependency (Kotlin Serialization)
- Update TAG variables to match with its class name. - Change the filename to ensure name consistency.
[REFACTOR] Tip Container Visibility and Design Fix
- Made architectural improvement on AppPreferenceRepository to prevent potential technical debt caused by monolithic Repository implementation.
* Decentralize Monolithic AppPreferenceRepository to achieve strict Separation of Concern via Interface Segregation.
* Necessary Binding functions have been defined for Dependency Injection via Dagger 2.
- Made architectural improvement on AppPreferenceRepository to prevent potential technical debt caused by monolithic Repository implementation.
* Update Dagger Components to provide necessary AppPreferences' dependencies.
- Made architectural improvement on AppPreferenceRepository to prevent potential technical debt caused by monolithic Repository implementation.
* Replace legacy monolithic AppPreferenceRepository dependency to updated dependencies based on the context and operations.
- Enhance current implementation of RemoteContentRepositoryImpl and RemotePreferenceRepositoryImpl into more smaller implementation of each interface to ensure strict separation of concern, and isolating logic/implementation
* RemoteContentRepositoryImpl
-> RemoteNoticeRepositoryImpl (Notice)
-> RemoteTipRepositoryImpl (Tip)
* RemotePreferenceRepositoryImpl
-> RemoteSubscriptionRepositoryImpl (Major Subscriptions)
-> RemoteUserReportRepositoryImpl (User Report Submission)
- Enhance Readability by using named Arguments and following function signature to provide arguments
…nce-Structural-Change [REFACTOR] Structural Enhancement of AppPreference Implementation
* Improve navigation structure/logic for the navigation via BottomNavBar.
- Apply Nested-Navigation graph for increased scalability, encapsulation of related screens, and better BackStackEntry Management.
- For the robust navigation handling for destinations accessed via BottomNavBar, Each BottomNavBar triggers the navigation to the corresponding NavGraph, with appropriate nav configuration (Save states for related instances, and restore it on later visit; Prevent multiple instantiation of same object per every screen visit)
- Implement Custom-defined BottomNavigationState composable to perform chronological back-button action handling.
- Refactor category-specific NavDestination into one, generalized NavDestination that accepts the category as a parameter.
* Improve navigation structure/logic for the navigation via BottomNavBar.
- Modify Lifecycle-bind event triggering logic to respect both Composition Lifecycle and Activity Lifecycle.
- Define Custom OnForegroundFocusEffect to seamlessly respond to both Composition and Activity Lifecycle.
(Instant event triggering on Screen becomes initially visible (Composition Lifecycle), LifecycleObserver to trigger event based on Application/Activity Lifecycle.
* Improve navigation structure/logic for the navigation via BottomNavBar.
- Remove unused import directives
- Completion of 1.7.1 Epic. Build configuration has been updated.
* Version Code: 38
* Version Name: 1.7.1 RC 1
…ed NavGraph to perform navigation - Replace navigation via direct navController access to dedicated navigation function performs navigation via BottomNavState to ensure SSOT - Implement separate NavRoute resolver to resolve corresponding NavDestination for NoticeDetail and BookmarkDetail/Edit.
…re-improvement [REFACTOR] Navigation Structure/Logic Improvement
- Resolve identified Deeplink-related edge case. (OS launch Task from History)
- Stabilize current Deeplink processing logic (utilize Channel to ensure correct intent processing while preventing duplicated navigation.
- Modify Manifest Rule for WidgetConfigurationActivity to enhance UX
- Update Build configurations
* VersionCode: 39
* VersionName: 1.7.1 RC2
- Apply appropriate Intent clean-up process after its successful processing, to prevent unexpected duplicated processing cased by Activity Recreation. - Remove redundant, unnecessary state variable and corresponding UI composable, which would never be displayed.
…ation [REFACTOR] Deeplink Processing Stabilization.
- Build Configuration Updated
* Version Code: 40
* Version Name: 1.7.1
Member
Author
|
All modifications have already been verified and approved. Commence merge. |
There was a problem hiding this comment.
Code Review
This pull request refactors the navigation and data layers by introducing nested navigation graphs, a custom bottom navigation state manager, and dynamic routing for notice categories. The monolithic AppPreferences is decomposed into specialized repositories, and the repository layer is reorganized into local and remote packages. Deep link processing is migrated to a Channel-based flow in MainActivity, and file download logic is enhanced to support HWP files and filename decoding. Feedback addressed redundant deep link processing during activity recreation and the lack of persistence for navigation tab history.
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
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.
KNUTICE Android 1.7.1 Release
All modifications have already been verified and approved. Commence merge.
Included Changes: