Giter VIP home page Giter VIP logo

thomaskioko / tv-maniac Goto Github PK

View Code? Open in Web Editor NEW
197.0 7.0 23.0 66.58 MB

Tv-Maniac is a personalized entertainment tracking and recommendation Multiplatform app (Android & iOS) for tracking TV Shows using TMDB API.

License: Apache License 2.0

Kotlin 82.69% Swift 17.31%
kotlin-multiplatform jetpack-compose android ios mvi-clean-architecture kotlin-serialization ktor ktor-client kmp kmm

tv-maniac's People

Contributors

misshannah avatar renovate[bot] avatar thomaskioko 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

tv-maniac's Issues

[Bug] Datastore App Crash

Description

There are multiple DataStores causing the app to crash when taken to the background and brought to the foreground.

Error Message.
java.lang.IllegalStateException: There are multiple DataStores active for the same file: /data/user/0/com.thomaskioko.tvmaniac.debug/files/tvmainac.preferences_pb. You should either maintain your DataStore as a singleton or confirm that there is no two DataStore's active on the same file (by confirming that the scope is cancelled).

How To Reproduce

  1. Enable "Don't keep activities" in Developer settings.
  2. Run the app and take it to the background.
  3. Press the Overview button and select the app again.

Refactor Profile Module

Righ now, the profile module bundles up some functionality that could be split into separate modules.

  • Stats module
  • FavoriteList Module (Think of a different name. show-list, trakt-showlist) or delete since it's not being used at the moment.

iOS Paging

Paging was implemented in the Shared module and Android app. If you're up for a challenge, iOS needs some love.

DiscoverStateMachine Crash

DiscoverStateMachine is crashing with the following error:

Uncaught Kotlin exception: kotlin.IllegalStateException: Can not collect state more than once at the same time. 
Make sure the previous collection is canceled before starting a new one. Collecting state in parallel would 
lead to subtle bugs.

Save Trakt Token

Description

Once #61 is done, we can save the token on iOS side. We will need to:

  • Save the token
  • Update UI based on the Authentication state. (Requires #64)

Compose Navigation Improvement.

Description

We currently have a module (navigation) responsible for setting up navigation. Each feature module should create a factory that implements ComposeNavigationFactory and define its route. This works fine, but we can improve it by moving the navigation logic away from the screens and potentially handling them in the ViewModel or StateMachines. Other than creating our implementation, we can use the following libraries:

Store Migration

Use Store in the data & presentation layer to handle fetching data.

Modules

  • Similar Shows
  • Trailers
  • Profile
  • Profile Stats
  • Shows
  • Season Details

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: renovate.json
Error type: Invalid JSON (parsing failed)
Message: Syntax error near ],

Update Season/Episode Ui

Nest episodes under seasons in an expandable list. i.e Clicking on a season expands the list and displays the episodes.

Remember Scroll Position

Description

Screen scroll position is not remembered.

How to reproduce

  • On Discover screen, scroll to either of the lists and click on an item.
  • Click back.
  • Scroll position is not remembered.

question

thank you very much ,
what are the ideas behind? why they cannot be in one module with three folders

  1. ":data:trailers:implementation"
    
  2. ":data:trailers:testing"
    
  3. ":data:upcomingshows:api"
    

CancellationException

Occurs when fetching show details & episodes.

java.util.concurrent.CancellationException: StandaloneCoroutine was cancelled

Refactor ProfileStateMachine

Description

Right now, ProfileStateMachine is in the Android feature module. We need to move it to the shared module to access it on the iOS Client.

  • Create profile module in shared domain layer.
  • Refactor TraktManager or update ProfileStateMachine parameters.
  • Create a helper function to save the AuthState & token

P.S It would be great to have #58 done first.

Setup Trakt OAuth on iOS

##Descriptions
We need to be able to sign in to Trakt on the iOS Client by redirecting the user to the Trakt sign-in page when they navigate to the profile page. Once they sign in, we store the token that we will later use to make future requests.

Suggested libraries

#65

Fix Light Theme UI

  • The app was initially designed with Dark Theme in mind and ended up missing a couple of things on the Light theme. ๐Ÿ˜…

Trakt SignIn Bug

Description:

After signing into Trakt, the user's profile is not updated. The API returns a 401 when invoking getUser even though we have added the bearer tokens. Rerunning the app updates the profile info.

Expected behavior

After signing in, the profile info should be updated and the state updated.

Steps to reproduce

  • Navigate to settings
  • Click on 'Connect to Trakt'
  • Sign in & Authenticate the app.

Update iOS SwiftPackage

Description

iOS is still using an old version of the SMP.

Tasks

  • Release new version
  • Update iOS code to use the new smp package.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/build.yml
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/gradle-build-action v3.3.2
  • actions/checkout v4
  • actions/setup-java v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-java v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-java v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-java v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-java v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-java v4
  • softprops/action-gh-release v2
  • actions/upload-artifact v4
.github/workflows/release-drafter.yml
  • release-drafter/release-drafter v6
gradle
gradle.properties
settings.gradle.kts
build.gradle.kts
android/app/build.gradle.kts
android/designsystem/build.gradle.kts
android/resources/build.gradle.kts
android/ui/discover/build.gradle.kts
android/ui/library/build.gradle.kts
android/ui/more-shows/build.gradle.kts
android/ui/search/build.gradle.kts
android/ui/season-details/build.gradle.kts
android/ui/settings/build.gradle.kts
android/ui/show-details/build.gradle.kts
android/ui/trailers/build.gradle.kts
core/base/build.gradle.kts
core/logger/build.gradle.kts
core/network-util/build.gradle.kts
core/util/build.gradle.kts
data/cast/api/build.gradle.kts
data/cast/implementation/build.gradle.kts
data/cast/testing/build.gradle.kts
data/episodes/api/build.gradle.kts
data/episodes/implementation/build.gradle.kts
data/episodes/testing/build.gradle.kts
data/featuredshows/api/build.gradle.kts
data/featuredshows/implementation/build.gradle.kts
data/featuredshows/testing/build.gradle.kts
data/library/api/build.gradle.kts
data/library/implementation/build.gradle.kts
data/library/testing/build.gradle.kts
data/popularshows/api/build.gradle.kts
data/popularshows/implementation/build.gradle.kts
data/popularshows/testing/build.gradle.kts
data/recommendedshows/api/build.gradle.kts
data/recommendedshows/implementation/build.gradle.kts
data/recommendedshows/testing/build.gradle.kts
data/request-manager/api/build.gradle.kts
data/request-manager/implementation/build.gradle.kts
data/seasondetails/api/build.gradle.kts
data/seasondetails/implementation/build.gradle.kts
data/seasondetails/testing/build.gradle.kts
data/seasons/api/build.gradle.kts
data/seasons/implementation/build.gradle.kts
data/seasons/testing/build.gradle.kts
data/showdetails/api/build.gradle.kts
data/showdetails/implementation/build.gradle.kts
data/showdetails/testing/build.gradle.kts
data/shows/api/build.gradle.kts
data/shows/implementation/build.gradle.kts
data/similar/api/build.gradle.kts
data/similar/implementation/build.gradle.kts
data/similar/testing/build.gradle.kts
data/topratedshows/api/build.gradle.kts
data/topratedshows/implementation/build.gradle.kts
data/topratedshows/testing/build.gradle.kts
data/trailers/api/build.gradle.kts
data/trailers/implementation/build.gradle.kts
data/trailers/testing/build.gradle.kts
data/trendingshows/api/build.gradle.kts
data/trendingshows/implementation/build.gradle.kts
data/trendingshows/testing/build.gradle.kts
data/upcomingshows/api/build.gradle.kts
data/upcomingshows/implementation/build.gradle.kts
data/upcomingshows/testing/build.gradle.kts
data/watchproviders/api/build.gradle.kts
data/watchproviders/implementation/build.gradle.kts
data/watchproviders/testing/build.gradle.kts
database/build.gradle.kts
datastore/api/build.gradle.kts
datastore/implementation/build.gradle.kts
datastore/testing/build.gradle.kts
gradle/libs.versions.toml
  • androidx.compose:compose-bom 2024.04.00
  • androidx.activity:activity-ktx 1.9.0
  • androidx.browser:browser 1.8.0
  • androidx.activity:activity-compose 1.9.0
  • androidx.constraintlayout:constraintlayout-compose 1.0.1
  • androidx.compose.material:material 1.6.5
  • androidx.compose.material3:material3 1.2.1
  • androidx.compose.runtime:runtime 1.6.5
  • androidx.core:core-ktx 1.13.0
  • androidx.core:core-splashscreen 1.0.1
  • androidx.datastore:datastore-preferences-core 1.1.0
  • androidx.palette:palette-ktx 1.0.0
  • net.openid:appauth 0.11.1
  • io.coil-kt:coil 2.6.0
  • io.coil-kt:coil-compose 2.6.0
  • org.jetbrains.kotlinx:kotlinx-coroutines-core 1.8.0
  • org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm 1.8.0
  • org.jetbrains.kotlinx:kotlinx-coroutines-test 1.8.0
  • com.arkivanov.decompose:decompose 2.2.2
  • com.arkivanov.decompose:extensions-compose-jetpack 2.2.2
  • com.arkivanov.essenty:lifecycle 2.0.0
  • com.flaviofaria:kenburnsview 1.0.7
  • co.touchlab:kermit 2.0.3
  • io.kotest:kotest-assertions-core 5.8.1
  • me.tatarka.inject:kotlin-inject-compiler-ksp 0.6.3
  • me.tatarka.inject:kotlin-inject-runtime 0.6.3
  • org.jetbrains.kotlinx:atomicfu 0.24.0
  • org.jetbrains.kotlinx:kotlinx-collections-immutable 0.3.7
  • org.jetbrains.kotlinx:kotlinx-datetime 0.5.0
  • io.ktor:ktor-client-core 2.3.10
  • io.ktor:ktor-client-darwin 2.3.10
  • io.ktor:ktor-client-logging 2.3.10
  • io.ktor:ktor-client-content-negotiation 2.3.10
  • io.ktor:ktor-client-okhttp 2.3.10
  • io.ktor:ktor-client-serialization 2.3.10
  • io.ktor:ktor-serialization-kotlinx-json 2.3.10
  • com.slack.lint.compose:compose-lint-checks 1.3.1
  • io.github.aakira:napier 2.7.1
  • app.cash.paging:paging-common 3.3.0-alpha02-0.5.1
  • app.cash.paging:paging-compose-common 3.3.0-alpha02-0.5.1
  • dev.chrisbanes.snapper:snapper 0.3.0
  • app.cash.sqldelight:android-driver 2.0.2
  • app.cash.sqldelight:sqlite-driver 2.0.2
  • app.cash.sqldelight:native-driver 2.0.2
  • app.cash.sqldelight:coroutines-extensions 2.0.2
  • app.cash.sqldelight:primitive-adapters 2.0.2
  • app.cash.sqldelight:androidx-paging3-extensions 2.0.2
  • co.touchlab:stately-common 2.0.7
  • co.touchlab:stately-iso-collections 2.0.7
  • co.touchlab:stately-isolate 2.0.7
  • org.mobilenativefoundation.store:store5 5.0.0
  • app.cash.turbine:turbine 1.1.0
  • net.mamoe.yamlkt:yamlkt 0.13.0
  • com.pierfrancescosoffritti.androidyoutubeplayer:core 12.1.0
  • com.android.tools:desugar_jdk_libs 2.0.4
  • com.android.tools.build:gradle 8.3.2
  • org.jetbrains.kotlin:kotlin-gradle-plugin 1.9.23
  • com.android.application 8.3.2
  • com.android.library 8.3.2
  • com.autonomousapps.dependency-analysis 1.31.0
  • org.jetbrains.kotlin.android 1.9.23
  • com.google.devtools.ksp 1.9.23-1.0.20
  • org.jetbrains.kotlin.multiplatform 1.9.23
  • org.jetbrains.kotlin.plugin.serialization 1.9.23
  • co.touchlab.skie 0.6.4
  • app.cash.sqldelight 2.0.2
  • com.diffplug.spotless 6.25.0
navigation/build.gradle.kts
navigation/api/build.gradle.kts
navigation/implementation/build.gradle.kts
presentation/discover/build.gradle.kts
presentation/library/build.gradle.kts
presentation/more-shows/build.gradle.kts
presentation/search/build.gradle.kts
presentation/seasondetails/build.gradle.kts
presentation/settings/build.gradle.kts
presentation/show-details/build.gradle.kts
presentation/trailers/build.gradle.kts
shared/build.gradle.kts
tmdb-api/api/build.gradle.kts
tmdb-api/implementation/build.gradle.kts
tooling/gradle.properties
tooling/settings.gradle.kts
tooling/plugins/build.gradle.kts
trakt-api/api/build.gradle.kts
trakt-api/implementation/build.gradle.kts
trakt-auth/api/build.gradle.kts
trakt-auth/implementation/build.gradle.kts
trakt-auth/testing/build.gradle.kts
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.7
tooling/gradle/wrapper/gradle-wrapper.properties
  • gradle 8.7

  • Check this box to trigger a request for Renovate to run again on this repository

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.