Coder Social home page Coder Social logo

mars885 / gamedge Goto Github PK

View Code? Open in Web Editor NEW
623.0 9.0 60.0 27.85 MB

An Android application for browsing video games and checking the latest gaming news from around the world.

License: Apache License 2.0

Kotlin 99.92% Shell 0.08%
android android-application video-games video-games-crawler jetpack-android dagger-hilt kotlin mvi

gamedge's People

Contributors

mars885 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gamedge's Issues

Migrate to Jetpack Compose

Jetpack Compose is the new UI framework for Android that is going to replace the current one in the near future.

The project is using an incompatible version (7.0.0-beta05) of the Android Gradle plugin.

I'm trying to build the project with new Android Studio (Arctic Fox), but it says (The project is using an incompatible version (7.0.0-beta05) of the Android Gradle plugin.), and If I upgrade it manually Hilt doesn't work properly, I keep getting @HiltAndroidApp base class must extend Application, tried cleaning the project, invalidate cache and restart but no success.

Enforce trailling comma styling rule

Start enforing trailling comma styling rule as soon as ktlint starts supporting it. It seems at the moment that the rule is experimental. As soon as it is deemed stable, consider enabling it.

The issue to track about its support.

Animate the game info header using the MotionLayout

The latest release of MotionLayout for Jetpack Compose, 1.1.0-alpha02, does not seem to support OnSwipe gestures for the LazyColumn composable. Try again as soon as the support for that comes out.

Monitoring the releases can be done here.

Create a custom `@Preview` annotation as a shortcut for both light & dark themes

Apparently, starting from Compose 1.2, it's possible to create a single annotation for previewing multiple configurations of a particular composable instead of duplicating @Preview multiple times everywhere.

However, as of Jetpack Compose version 1.2 and Android Studio Chipmunk, preview just don't work. Therefore, as soon as previews get fixed, create a single preview annotation and use it for previewing composables. Something like this:

@Preview
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
annotation class GamedgePreview

Then, use it like so:

@GamedgePreview
@Composable
private fun GameInfoLoadingStatePreview() {
  // ...
}

Disable swiping of artworks when game info header is collapsed

The ViewPager2 class has the support to enable/disable swiping by calling the method setUserInputEnabled(boolean isEnabled).

Before the migration, whe the game info header was collapsed, the scrolling of artworks was disabled like this.

However, the Accompanist's analogue, as of the 0.23.1, does not support doing that. Starting from the 0.24.1-alpha, the support has been added.

Consider using that as soon as #139 issue is resolved & the version of Accompanist gets updated inside the project.

Create a use case for generating game's different URLs and refactor `GameInfoViewModel` to use it

Currently, when a user is on the game info screen and clicks on an image, we need to pass a ready-to-be consumed URL of a clicked image to the image viewer screen. The logic for getting a particular image URL is embedded inside the GameInfoViewModel (like here, here, and here).

It looks quite dirty and a separate use case named something like GetGameImageUrlsUseCase is needed to be created and then GameInfoViewModel refactored to use it.

Use horizonal sliding animations

For the horizontal sliding animations to work properly, they require specifying the zIndex for both the entering & exiting animations.

However, from the research done, it seems like it's not possible to specify it inside AnimatedNavHost.enterTransition, AnimatedNavHost.exitTransition, AnimatedNavHost.popEnterTransition, and AnimatedNavHost.popExitTransition as of 0.23.1 version of the Accompanist library.

The Accompanist's issue can be tracked here.

AS always shows `Duplicate content roots detected` popup when Gradle sync is performed

At the moment of this writing, KSP requires us to specify where the generated code lives. If we were to omit it, the generated code does not get picked up and the build fails.

The solution, however, causes the popup with text "Duplicate content roots detected" appear after every Gradle sync.

Firstly, follow google/ksp#37 issue and see whether a better solution is provided.
Second, follow AS issue for Duplicate content roots detected popup appearing.

Remove font padding from the game info header's second title

In the XML world, TextView allows disabling the font padding by specifying includeFontPadding="false". This was used by the second title of the game info header to remove any extra space between the first title & second one.

However, as of 1.1.1 version of the Jetpack Compose, it's not possible to do that. As of the 1.2.0-beta01, the support for that has been added. As soon as the project gets updated to use 1.2.0 version of the Jetpack Compose, consider removing the font padding, just like it was before the migration to Compose.

Keep the `igdb-api` JSON schema in sync with the backend

The video entities coming from the IGDB API do not contain name field sometimes, which causes an error when trying to load a game inside the game info screen, since that field is required in the JSON schema.

Another issue arises in terms of what to show on the UI side. Two solutions:

  • Display some kind of placeholder text, like Video or Trailer.
  • Make the video's thumbnail take the height of the missing title

About common-domain module

Hi thanks for a great sample about modular application with compose. I'm curious about why are you seperate common-domain instead of adding domain package in every feature modules?

Translations

do you have plans to implement translations? there are services like webblate and crowdin.

Preload images inside the image viewer screen

The ViewPager2 class has the method setOffscreenPageLimit that allows to preload a specified number of items on either side.

Before the Jetpack Compose migration, it was used to preload images inside the image viewer screen.

However, the Accompanist's analogue of the ViewPager2, does not currently support that. Consider adding it as soon as support for this feature is released.

The issue to track on the Accompanist's side.

Use java-test-fixtures plugin

Incorporate the java-test-fixtures plugin to share common testing code across the project and delete commons-testing module, which acts as a replacement for it at this point.

Unfortunately, the plugin, at the moment of writing this issue, is only available for pure java and kotlin modules, meaning it cannot be used for android modules. There is a feature request on the Google Issue Tracker to support java-test-fixtures plugin.

A good resource about what text-fixtures-plugin is and what it can do can be found here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.