Continues the work initiated in #738.
Extract the SDK version check inside a `GrantPostNotificationPermissionRule` class that delegates to a regular `GrantPermissionRule`.
Combine the search result of topics and news resources in one
LazyVerticalGrid so that topics don't get in the way.
Before this change, the result of topics created a LazyColumn and
the result of news resources created the LazyVerticalGrid separately
that made the situation where there were two separete vertical scrolling
lists.
Implement search feature
- Add a feature module named "search"
- Add a SearchScreen that is navigated by tapping the search icon at the top left corner
- Add a data layer that takes care of populating the *Fts tables and querying them by a search query
- Add a SearchViewModel that wires up the data layer of the Fts tables with the SearchScreen
The SearchScreen has following features:
- The user is able to type the search query in the TextField
- The search result is displayed as the user types
- When the search result is clicked, it navigates to:
- The InterestsScreen when a topic is clicked
- Chrome custom tab with the URL of the clicked news resource
- When the search result is clicked or the IME is explicitly closed by the user, the current search query in the TextField is saved as recent searches
- Latest recent searches are displayed in the SearchScreen
When a news resource is unread, display a dot on its card in the news
feed. When the For You section has unread resources, display a dot on
its icon in the navigation bar.
Update the read status when a resource is opened.
This moves the responsibility for joining the UserData and the
NewsResources to UserNewsResourceRepository. This way, the work can be
done once and shared with all consumers in a SharedFlow, rather than
having each consumer perform the join itself by invoking the UseCase.
* goog/main:
Revert "Revert "Revert "Revert "New build trigger""""
Bump versionCode to 5
Remove AD_ID permission
Add Firebase analytics. See go/nia-firebase-services.
Simplify build script
Copy local.properties during build
Fix exit codes
Remove .prod from the applicationIdSuffix in preparation for Play launch
Build aab with play services enabled
Build release artifacts separately, using google-services
Enable use-google-services in release builds
Revert "Revert "Revert "New build trigger"""
Revert "Revert "New build trigger""
Revert "New build trigger"
New build trigger
Increment internal build trigger
Adding a file which can be modified to trigger an internal build
Add Firebase dependencies
Remove API 23 from list of APIs to test in Firebase Test Lab (it's flaky)
Copy google-services.json from prebuilts folder
Change-Id: Ibc76e1b89c6c7e7f58843edb56581e169c9ce14e
* github/main:
Bump version to 4
Remove unused DropdownMenu component
Route topic chip tap events up to NiaNavHost
Apply suggestions from code review
Migrate custom room configuration into a convention plugin
Update docs/ArchitectureLearningJourney.md - User action follow topic
Update docs/ArchitectureLearningJourney.md - Writing data
Change-Id: I417abcaba792bbf297a8156bb1c4cf677dcb8bea
> `Transformations` is now written in Kotlin. This is a *source incompatible change* for those classes written in Kotlin that were directly using syntax such as `Transformations.map`
> Kotlin code *must* now use the Kotlin extension method syntax that was previously only available when using `lifecycle-livedata-ktx`.
> The `collectAsStateWithLifecycle()` APIs of `lifecycle-runtime-compose` are no longer in experimental status. (I09d42, b/258835424)
Changelog: https://developer.android.com/jetpack/androidx/releases/lifecycle#2.6.0-alpha05
This PR is about updating the operating system to macOS-12 as the previous one was going to be deprecated, as well as updating the checkout to v3 to avoid the warnings in the panel; adding setup SDK action to accept the license which was missing from the beginning.
I also added imports instead of adding them directly with the codes.
As a reference, there was another PR with a similar topic, but it wasn't complete: #483
Introduce Gradle Managed Device definitions to modules that have instrumented tests.
At the moment, defining it as a convention plugin isn't possible due to the bug. That bug is now fixed and will be included in Android Studio Flamingo.
Once Flamingo becomes stable, convert the GMD definitions as a convention plugin (#523)
Change-Id: I0866369e3d0bbe148ca5ec1f92bad59239a347b8
* Added the png file for error state
This should be removed later - couldn't convert the design to vector from svg - there is a problem with the `<mask` tag.
* Added two new strings based on the Figma file
* Redesign and reimplementation for the empty BookmarksScreen along with two clarifying comments.
* Removed the png file and replaced it with vector
* Code refactor after code reviewing
Made contentDescription null, removed extra spaces and renaming for the Composable function as suggested.
* Moved the modifier after Text
* Added a space after the curly bracket to pass the Spotless check
* Spotless apply
* Simplify logic in Bookmarks screen
* Change order of composables in BookmarksScreen and add previews
* Refactor after code review
Removed the space before `if`, and changed the padding from 5 to 8dp.
Co-authored-by: Jolanda Verhoef <JolandaVerhoef@users.noreply.github.com>
So basically here I am checking if the feed count is not empty, then show the data, otherwise, show a simple `Text()` to notify that the user hasn't bookmarked a feed yet!