Develop refactor architecture#37
Merged
MihaiCristianCondrea merged 57 commits intomasterfrom Mar 7, 2026
Merged
Conversation
- Updated `LessonCard` to support different layouts based on lesson type (`SquareImageLessonItem` and `FullImageBannerLessonItem`). - Added support for displaying lesson descriptions and tags (using `AssistChip` in a `LazyRow`) within lesson items. - Added `lessonSquareImageUrl` to `ListingLesson` domain model, DTO, and UI state. - Updated `ListingLessonMappers` to correctly map both thumbnail and square image URLs. - Simplified `LessonListItem` by removing local banner types and renaming ad-related constants in `LessonConstants`. - Refactored `LessonListLayout` to pass the full lesson object to `LessonCard` and updated item key logic. - Modified domain mapping to validate lessons based on `lessonType` instead of `lessonId`.
- Updated `LessonCard` to support different layouts based on lesson type (`SquareImageLessonItem` and `FullImageBannerLessonItem`). - Added support for displaying lesson descriptions and tags (using `AssistChip` in a `LazyRow`) within lesson items. - Added `lessonSquareImageUrl` to `ListingLesson` domain model, DTO, and UI state. - Updated `ListingLessonMappers` to correctly map both thumbnail and square image URLs. - Simplified `LessonListItem` by removing local banner types and renaming ad-related constants in `LessonConstants`. - Refactored `LessonListLayout` to pass the full lesson object to `LessonCard` and updated item key logic. - Modified domain mapping to validate lessons based on `lessonType` instead of `lessonId`.
- Updated `ListingLessonMappers.kt` to provide a default deep link path using the lesson ID if the original path is blank. - Refactored `LessonViewModel.kt` to use `catchReport` for error handling and reporting. - Removed unused `FirebaseController` dependency from `LessonViewModel` and its dependency injection module. - Updated snackbar timestamps in `LessonViewModel` to use `System.nanoTime()` for better precision.
…-template-based-architecture Refactor listing pipeline for new template structure, fix manifest wiring and navigation
- Updated `ListingLessonMappers.kt` to provide a default deep link path using the lesson ID if the original path is blank. - Refactored `LessonViewModel.kt` to use `catchReport` for error handling and reporting. - Removed unused `FirebaseController` dependency from `LessonViewModel` and its dependency injection module. - Updated snackbar timestamps in `LessonViewModel` to use `System.nanoTime()` for better precision.
- Updated the Android namespace to `com.d4rk.androidtutorials` in `build.gradle.kts`. - Updated `FAQ_PRODUCT_ID` to `com.d4rk.androidtutorials` in `HelpConstants.kt`.
- Updated the Android namespace to `com.d4rk.androidtutorials` in `build.gradle.kts`. - Updated `FAQ_PRODUCT_ID` to `com.d4rk.androidtutorials` in `HelpConstants.kt`.
- Updated the Android namespace to `com.d4rk.androidtutorials` in `build.gradle.kts`. - Updated `FAQ_PRODUCT_ID` to `com.d4rk.androidtutorials` in `HelpConstants.kt`.
- Updated the Android namespace to `com.d4rk.androidtutorials` in `build.gradle.kts`. - Updated `FAQ_PRODUCT_ID` to `com.d4rk.androidtutorials` in `HelpConstants.kt`.
- Updated the Android namespace to `com.d4rk.androidtutorials` in `build.gradle.kts`. - Updated `FAQ_PRODUCT_ID` to `com.d4rk.androidtutorials` in `HelpConstants.kt`.
- Removed `FavoritesScreen` and `BannerAdView` in favor of a unified listing infrastructure. - Renamed `LessonListLayout` to `ListingColumn` and refactored it to use a new rendering system. - Introduced `ListingSectionRenderer` to handle different lesson types and ads dynamically. - Refactored `LessonCard` into a generic container, moving specific content implementations to `SquareImageLessonItem` and `FullImageBannerLessonItem`. - Updated `ListingScreen` to handle lesson filtering for "All" and "Favorites" modes locally. - Organized list item views into a new `ui.views.list` package structure. - Removed `ListingListItemMappers` as the mapping logic was integrated into the renderer.
- Removed `FavoritesScreen` and `BannerAdView` in favor of a unified listing infrastructure. - Renamed `LessonListLayout` to `ListingColumn` and refactored it to use a new rendering system. - Introduced `ListingSectionRenderer` to handle different lesson types and ads dynamically. - Refactored `LessonCard` into a generic container, moving specific content implementations to `SquareImageLessonItem` and `FullImageBannerLessonItem`. - Updated `ListingScreen` to handle lesson filtering for "All" and "Favorites" modes locally. - Organized list item views into a new `ui.views.list` package structure. - Removed `ListingListItemMappers` as the mapping logic was integrated into the renderer.
- Modified the item key generation logic to ensure uniqueness by combining the ID (or type) with the index.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
- Added `ToggleLessonFavorite` and `ShareLesson` events to `ListingEvent`. - Added `ShareLessonAction` to handle lesson sharing via intent. - Implemented `toggleFavorite` logic in `ListingViewModel` to update UI state. - Updated `ListingScreen` to handle share and open details actions using `LaunchedEffect`. - Modified `SquareImageLessonItem` and `FullImageBannerLessonItem` to include favorite and share buttons. - Added `LessonTagsRow` and `LessonButtonsRow` reusable components for lesson cards. - Refactored `LessonCard` to remove `bounceClick` modifier, moving it to specific action buttons. - Added helper functions for safe activity starting and sharing intent creation.
…o-bot-to-use-app-toolkit-architecture Refactor Studio Bot: add conversations layer and local Room persistence
…o-bot-architecture-and-ui Refactor Studio Bot into host + conversations architecture with persistence
…details - Moved `StudioBotEntryBuilder` from `studiobot.chat.ui.navigation` to `studiobot.ui.navigation` and updated associated imports. - Renamed `anim_splash_screen.xml` to `anim_splash.xml`. - Refactored `StudiobotViewModel` to use `androidx.core.content.edit` for SharedPreferences updates and explicitly invoked `observeConversationsUseCase`. - Added a FIXME comment in `StudiobotScreen` regarding the use of `LocalConfiguration` for screen width detection.
…details - Moved `StudioBotEntryBuilder` from `studiobot.chat.ui.navigation` to `studiobot.ui.navigation` and updated associated imports. - Renamed `anim_splash_screen.xml` to `anim_splash.xml`. - Refactored `StudiobotViewModel` to use `androidx.core.content.edit` for SharedPreferences updates and explicitly invoked `observeConversationsUseCase`. - Added a FIXME comment in `StudiobotScreen` regarding the use of `LocalConfiguration` for screen width detection.
- Added `LessonCodeContent` component to display and copy code snippets. - Updated `Lesson` domain model, DTOs, and UI state to include `contentCode` and `programmingLanguage`. - Integrated `CODE`, `AD_BANNER_FULL`, and `FULL_IMAGE_BANNER` types into `LessonSectionRenderer`. - Added `SelectStartupScreenAlertDialog` to `AppDisplaySettingsProvider`. - Refactored `LessonWriterFooterItem` to use the new `lesson_written_by` string resource. - Cleaned up redundant permission summaries and language arrays across multiple `strings.xml` locales. - Added `font_google_sans_code.ttf` for monospace code rendering.
- Added `LessonCodeContent` component to display and copy code snippets. - Updated `Lesson` domain model, DTOs, and UI state to include `contentCode` and `programmingLanguage`. - Integrated `CODE`, `AD_BANNER_FULL`, and `FULL_IMAGE_BANNER` types into `LessonSectionRenderer`. - Added `SelectStartupScreenAlertDialog` to `AppDisplaySettingsProvider`. - Refactored `LessonWriterFooterItem` to use the new `lesson_written_by` string resource. - Cleaned up redundant permission summaries and language arrays across multiple `strings.xml` locales. - Added `font_google_sans_code.ttf` for monospace code rendering.
- Added `LessonCodeContent` component to display and copy code snippets. - Updated `Lesson` domain model, DTOs, and UI state to include `contentCode` and `programmingLanguage`. - Integrated `CODE`, `AD_BANNER_FULL`, and `FULL_IMAGE_BANNER` types into `LessonSectionRenderer`. - Added `SelectStartupScreenAlertDialog` to `AppDisplaySettingsProvider`. - Refactored `LessonWriterFooterItem` to use the new `lesson_written_by` string resource. - Cleaned up redundant permission summaries and language arrays across multiple `strings.xml` locales. - Added `font_google_sans_code.ttf` for monospace code rendering.
- Added `LessonCodeContent` component to display and copy code snippets. - Updated `Lesson` domain model, DTOs, and UI state to include `contentCode` and `programmingLanguage`. - Integrated `CODE`, `AD_BANNER_FULL`, and `FULL_IMAGE_BANNER` types into `LessonSectionRenderer`. - Added `SelectStartupScreenAlertDialog` to `AppDisplaySettingsProvider`. - Refactored `LessonWriterFooterItem` to use the new `lesson_written_by` string resource. - Cleaned up redundant permission summaries and language arrays across multiple `strings.xml` locales. - Added `font_google_sans_code.ttf` for monospace code rendering.
…-empty-chats-in-studio-bot Avoid persisting empty Studio Bot conversations
…o-bot-architecture-and-ui-9rcs4b Refine Studio Bot conversations flow and hide bottom nav on scroll
…ext-for-lessons Update lesson sharing copy for listing screen
…-request-handling Fix pagination append state race that triggered extra requests
…nversations-control Add conversation list UI, back navigation, and conversation creation flow for Studio Bot
…e-to-dismiss-for-chats Add Gmail-style swipe-to-delete for Studio Bot chat messages
…etodismissbox-for-chats Add Gmail-like swipe-to-delete for Studio Bot conversations
- Added `LessonCodeContent` component to display and copy code snippets. - Updated `Lesson` domain model, DTOs, and UI state to include `contentCode` and `programmingLanguage`. - Integrated `CODE`, `AD_BANNER_FULL`, and `FULL_IMAGE_BANNER` types into `LessonSectionRenderer`. - Added `SelectStartupScreenAlertDialog` to `AppDisplaySettingsProvider`. - Refactored `LessonWriterFooterItem` to use the new `lesson_written_by` string resource. - Cleaned up redundant permission summaries and language arrays across multiple `strings.xml` locales. - Added `font_google_sans_code.ttf` for monospace code rendering.
…n existence, update the AppToolkit dependency source, and refine build configuration fields and packaging rules.
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.
No description provided.