Skip to content

✨ Design fine tuning#405

Merged
martinbonnin merged 7 commits intomainfrom
design/agenda
Mar 31, 2026
Merged

✨ Design fine tuning#405
martinbonnin merged 7 commits intomainfrom
design/agenda

Conversation

@renaudmathieu
Copy link
Copy Markdown
Collaborator

🔔 Notifications push dans le fil d'actualité

Les messages envoyés via Firebase (FCM) sont maintenant reçus, sauvegardés et affichés dans l'onglet Feed de l'application.

Les notifications contiennent un titre, un corps de texte et un type (Info, Alerte, Annonce)
Chaque message reçu est stocké localement et affiché avec un badge coloré et un horodatage relatif
Fonctionne sur iOS et Android, en premier plan comme en arrière-plan
Les données de test (mock) ont été supprimées — le feed est désormais 100 % alimenté par les vraies notifications

🗂️ Fusion des onglets Venue et About → "Info"

La barre de navigation passe de 6 à 5 onglets pour simplifier l'expérience utilisateur.

Un nouvel onglet "Info" regroupe les informations sur le lieu (Venue) et la page À propos (About)
L'onglet Feed, précédemment masqué, est de nouveau visible dans la navigation

🎨 Modernisation visuelle de l'interface

Plusieurs ajustements visuels pour une interface plus cohérente et plus légère.

Les icônes de navigation affichent désormais une version pleine quand l'onglet est sélectionné, et en contour sinon
Les tags sur les sessions de l'agenda ont une couleur plus douce (exit le rouge vif)
Maximum 3 tags visibles par session, avec un indicateur "+N" si davantage
Quelques composants graphiques modernisés (cartes, boutons, chips)

…tion

This change introduces a persistent local feed powered by DataStore, allowing push notifications to be saved and displayed to users.

- Add `FeedLocalRepository` using DataStore and Kotlin Serialization for local message storage.
- Integrate push notification handling on Android (`FirebaseMessagingService`) and iOS (`AppDelegate`) to capture and persist incoming feed items.
- Introduce `FeedItem.Message` type and `MessageCard` UI component for displaying dynamic feed content.
- Refactor `GetFeedUseCase` to fetch directly from the repository, removing hardcoded venue-to-article mapping.
- Add POST_NOTIFICATIONS permission request for Android 13+ in `MainActivity`.
- Update `AgendaRow` to limit visible tags to 3 with an overflow indicator and refine chip styling.
- Replace `MockFeedRepository` with `FeedLocalRepository` in the dependency injection module.
- Introduce `InfoScreen` to combine about information and venue details.
- Update bottom navigation and routes to replace `VenueKey` and `AboutKey` with `InfoKey`.
- Refactor `AboutScreen` components to be reusable within the new `InfoScreen`.
- Adjust `VenuePager` styling and add modifier support.
- Bump dependency versions for `androidx-wear-compose`, `compose`, `firebase-bom`, and `jetbrains-lifecycle`.
…d modernize UI

- Replaces the `material-icons-extended` dependency with local XML drawables in `composeResources`.
- Updates UI components to use Material 3 Expressive APIs, including `ElevatedCard`, `OutlinedCard`, and `FilledTonalButton`.
- Migrates standard typography to `Emphasized` styles (e.g., `headlineSmallEmphasized`, `titleMediumEmphasized`).
- Replaces custom tag surfaces with `SuggestionChip`.
- Implements dynamic edge-to-edge support in `MainActivity` based on the user's theme preference.
- Refactors icon usage to use `painterResource` instead of `ImageVector`.
@renaudmathieu renaudmathieu changed the title ✨ Design fine tuning Mar 28, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements the “Info” tab merge (Venue + About), re-enables and modernizes the Feed UI, and adds end-to-end push-notification ingestion (FCM → local storage → Feed display) across Android and iOS, alongside broader UI visual polish (cards, chips, icons, typography).

Changes:

  • Add local feed persistence + message rendering, and wire push notifications (Android + iOS) to store incoming feed messages.
  • Merge Venue/About into a new “Info” tab and update navigation (5 tabs, selected/unselected icons).
  • Replace Material Icons usage with composeResources vector drawables and update multiple screens to Material3 expressive components/typography.

Reviewed changes

Copilot reviewed 78 out of 78 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
shared/ui/src/jvmMain/kotlin/com/androidmakers/ui/common/SigninButton.jvm.kt Switch sign-in icon to composeResources drawable.
shared/ui/src/androidMain/kotlin/com/androidmakers/ui/common/SigninButton.android.kt Switch sign-in icon to composeResources drawable.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/venue/VenuePager.kt Add modifier parameter + padding; adjust TabRow colors.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/sponsors/SponsorScreen.kt Move to ElevatedCard + expressive typography.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerListScreen.kt Replace Material Icons with composeResources drawables.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt Replace back icon with composeResources drawable.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/info/InfoScreen.kt New unified Info screen combining About + (optional) Venue.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/feed/MessageCard.kt New UI card for persisted push notification messages.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/feed/FeedViewModel.kt Update dismissed-alert tracking implementation.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/feed/FeedScreen.kt Render FeedItem.Message via MessageCard.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/feed/ArticleCards.kt Convert article cards to ElevatedCard + resource-based icons/typography.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/feed/AlertBannerCard.kt Replace warning/close icons with composeResources drawables.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/common/navigation/Routes.kt Add InfoKey; keep legacy keys for serialization; update tab key detection.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/common/navigation/AVALayout.kt Update bottom nav to 5 tabs with selected/unselected painter icons; route Info tab to InfoScreen.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/common/SocialIcons.kt Replace “Public” icon with composeResources drawable.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/common/GraphQLFeedbackLayout.kt Use expressive typography; opt-in expressive API.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/SessionDetailLayout.kt Modernize session detail UI (cards, chips, icons, typography).
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/AgendaRow.kt Update session rows + tag display (max 3 + “+N”), switch icons/buttons/cards.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/AgendaLayout.kt Replace filter icons with composeResources drawables.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/AgendaColumn.kt Use expressive typography for time separators; opt-in expressive API.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/about/AboutScreen.kt Refactor About building blocks to internal + adopt updated Material3 components/icons.
shared/ui/src/commonMain/kotlin/com/androidmakers/ui/MainLayout.kt Replace About tab with Info tab and wire feature flags type import cleanup.
shared/ui/src/commonMain/composeResources/values/strings.xml Add “info” string.
shared/ui/src/commonMain/composeResources/values-fr/strings.xml Add French “info” string.
shared/ui/src/commonMain/composeResources/drawable/ic_account_circle.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_arrow_back.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_auto_awesome.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_bookmark.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_bookmark_add.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_bookmark_added.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_calendar_month.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_calendar_month_outlined.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_clear.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_close.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_code.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_dark_mode.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_dynamic_feed.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_dynamic_feed_outlined.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_favorite.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_favorite_border.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_filter_list.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_gavel.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_groups.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_groups_outlined.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_info.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_info_outlined.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_keyboard_arrow_right.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_light_mode.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_location_on.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_person.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_play_arrow.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_public.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_question_answer.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_schedule.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_search.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_settings_brightness.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_share.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/ic_warning.xml Add vector icon resource.
shared/ui/src/commonMain/composeResources/drawable/0.xml Add (likely accidental) vector resource file with invalid name.
shared/ui/build.gradle.kts Remove material-icons-extended dependency.
shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/repo/FeedRepository.kt Add addFeedItem API for persisting incoming items.
shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/model/FeedItem.kt Add FeedItem.Message and MessageType.
shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/model/FeatureFlags.kt Reformat FeatureFlags class definition.
shared/domain/src/commonMain/kotlin/fr/androidmakers/domain/interactor/GetFeedUseCase.kt Simplify use case to return repository feed only (remove venue merging).
shared/domain/src/commonTest/kotlin/fr/androidmakers/domain/interactor/GetFeedUseCaseTest.kt Update tests for new feed-only behavior and message items.
shared/domain/src/commonTest/kotlin/fr/androidmakers/domain/interactor/FakeVenueRepository.kt Remove unused venue fake after feed/venue decoupling.
shared/domain/src/commonTest/kotlin/fr/androidmakers/domain/interactor/FakeFeedRepository.kt Implement addFeedItem for tests.
shared/di/src/commonMain/kotlin/fr/androidmakers/di/DataModule.kt Bind FeedRepository to new FeedLocalRepository.
shared/di/src/iosMain/kotlin/fr/androidmakers/di/FeedHelper.kt New iOS helper to store feed items from push payloads into shared repository.
shared/data/src/commonMain/kotlin/fr/androidmakers/store/local/FeedLocalRepository.kt New DataStore-backed local feed storage implementation.
shared/data/src/commonMain/kotlin/fr/androidmakers/store/mock/MockFeedRepository.kt Replace static mock feed with in-memory mutable list + addFeedItem.
shared/data/src/commonMain/kotlin/fr/androidmakers/store/graphql/VenueGraphQLRepository.kt Minor formatting adjustments.
shared/data/build.gradle.kts Add Kotlin serialization plugin + JSON dependency for feed persistence.
iosApp/AndroidMakers/AppDelegate.swift Add APNs/FCM hooks and persist incoming notification payloads into shared feed storage.
androidApp/src/main/java/fr/paug/androidmakers/messaging/AndroidMakersMessagingService.kt Persist incoming FCM payloads into shared feed storage and improve notification display.
androidApp/src/main/java/fr/paug/androidmakers/MainActivity.kt Request notification permission (Android 13+) and adjust edge-to-edge styling based on theme.
androidApp/build.gradle.kts Remove material-icons-extended dependency.
gradle/libs.versions.toml Bump versions and add kotlinx-serialization-json dependency.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Introduces `BottomSheetSceneStrategy` to handle navigation entries as modal overlays using Navigation3. Updates the application layout to provide a responsive experience: session details now appear in a bottom sheet on narrow screens and remain in the detail pane on wide screens.

- Added `BottomSheetSceneStrategy` and `BottomSheetScene` for Material3 `ModalBottomSheet` integration.
- Updated `AVALayout` to toggle between `ListDetailSceneStrategy` and `BottomSheetSceneStrategy` based on screen size.
- Added `showTopBar` and `showBackButton` configuration to `SessionDetailLayout`.
- Refactored `AgendaRow` icon logic for better readability.
- Removed unused `0.xml` vector resource.
- Added `dismiss` string resource to `strings.xml`.
- Updated `AlertBannerCard` to use `stringResource` for the close icon's content description instead of a hardcoded string.
…TagChip

- Replaces `SuggestionChip` with a custom `Surface` and `Text` layout in `AgendaRow` and `SessionDetailLayout` to improve styling control.
- Enables the Feed navigation item in `AVALayout` by commenting out the feature flag check.
- Add optional `imageUrl` to `FeedItem.Message` domain model
- Update `MessageCard` UI to display images using Coil
- Parse `feed_image_url` from FCM payloads in `AndroidMakersMessagingService`
- Update local persistence and repositories to handle image metadata
- Supplement feed with mock/hardcoded article items for testing
@martinbonnin martinbonnin merged commit 19ff229 into main Mar 31, 2026
1 of 2 checks passed
@martinbonnin martinbonnin deleted the design/agenda branch March 31, 2026 09:19
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.

4 participants