Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue #48: Use Navigation Component #51

Open
wants to merge 3 commits into
base: development-mu8
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@ buildscript {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath GradleDependencies.androidGradlePlugin
classpath KotlinDependencies.kotlinGradlePlugin
classpath SupportDependencies.googleService
classpath SupportDependencies.fabricTools
classpath ClasspathDependencies.androidGradlePlugin
classpath ClasspathDependencies.kotlinGradlePlugin
classpath ClasspathDependencies.googleService
classpath ClasspathDependencies.fabricTools
classpath ClasspathDependencies.safeArgs
}
}

Expand Down
20 changes: 13 additions & 7 deletions buildSrc/src/main/java/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,31 @@ object Versions {
internal const val testJunit = "1.1.1"
internal const val robolectric = "4.3.1"
internal const val coroutinesTest = "1.2.1"
internal const val lifecycleVersion = "2.1.0"
internal const val firebaseAnalytics = "17.2.0"
internal const val crashlytics = "2.10.1"
internal const val googleService = "4.3.2"
internal const val fabricTools = "1.31.2"
internal const val materialVersion = "1.0.0"
internal const val cardView = "28.0.0"
internal const val roomVersion = "2.2.3"
}

object GradleDependencies {
const val androidGradlePlugin = "com.android.tools.build:gradle:${Versions.androidGradlePlugin}"
// Jetpack
internal const val lifecycleVersion = "2.1.0"
internal const val navigationVersion = "2.1.0"
}

object JetPackDependencies {
const val lifecycle = "androidx.lifecycle:lifecycle-extensions:${Versions.lifecycleVersion}"
const val navigationFragment = "androidx.navigation:navigation-fragment-ktx:${Versions.navigationVersion}"
const val navigationUi = "androidx.navigation:navigation-ui-ktx:${Versions.navigationVersion}"
}

object ClasspathDependencies {
const val androidGradlePlugin = "com.android.tools.build:gradle:${Versions.androidGradlePlugin}"
const val fabricTools = "io.fabric.tools:gradle:${Versions.fabricTools}"
const val googleService = "com.google.gms:google-services:${Versions.googleService}"
const val kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
const val safeArgs = "androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.navigationVersion}"
}

object SupportDependencies {
Expand All @@ -49,13 +58,10 @@ object SupportDependencies {
const val cardView = "com.android.support:cardview-v7:${Versions.cardView}"
const val firebaseAnalytics = "com.google.firebase:firebase-analytics:${Versions.firebaseAnalytics}"
const val crashlytics = "com.crashlytics.sdk.android:crashlytics:${Versions.crashlytics}"
const val fabricTools = "io.fabric.tools:gradle:${Versions.fabricTools}"
const val googleService = "com.google.gms:google-services:${Versions.googleService}"
}

object KotlinDependencies {
const val kotlinStdLib = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Versions.kotlin}"
const val kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
const val coroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}"
}

Expand Down
13 changes: 13 additions & 0 deletions presentation/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: "androidx.navigation.safeargs.kotlin"
apply from: "$rootDir/detekt.gradle"

android {
Expand All @@ -23,16 +24,28 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}

dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation project(":domain")
implementation project(":data")
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation KotlinDependencies.kotlinStdLib

implementation JetPackDependencies.lifecycle
implementation JetPackDependencies.navigationFragment
implementation JetPackDependencies.navigationUi

implementation SupportDependencies.coreKtx
implementation SupportDependencies.appCompat
Expand Down
8 changes: 2 additions & 6 deletions presentation/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,13 @@
android:theme="@style/AppTheme"
tools:ignore="AllowBackup,GoogleAppIndexingWarning">

<activity android:name=".splash.SplashActivity">
<activity android:name=".common.StartingNavHostActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".comics.ComicsActivity" />
<activity android:name=".categories.CategoriesActivity" />
<activity android:name=".characters.CharactersActivity" />

<activity android:name=".characters.detail.CharactersDetailActivity" />
<activity android:name=".events.EventsActivity"/>
</application>

</manifest>

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.architect.coders.mu8.categories

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.lifecycle.Observer
import androidx.navigation.NavController
import androidx.navigation.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.architect.coders.mu8.R
import com.architect.coders.mu8.common.NavigationFragment
import com.architect.coders.mu8.common.StartingNavHostActivity
import com.architect.coders.mu8.data.categories.CategoriesRepository
import com.architect.coders.mu8.utils.getViewModel
import com.architect.codes.mu8.utils.CHARACTERS
import com.architect.codes.mu8.utils.COMICS
import com.architect.codes.mu8.utils.EVENTS
import com.architect.codes.mu8.utils.NOT_FOUND

class CategoriesFragment : NavigationFragment() {

private lateinit var recycler: RecyclerView

private lateinit var viewModel: CategoriesViewModel
private lateinit var adapter: CategoriesAdapter

private lateinit var navigationController: NavController
private lateinit var callback: OnBackPressedCallback

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.fragment_list, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val navHostActivity = activity as StartingNavHostActivity
navHostActivity.showToolbar()
navHostActivity.setToolbarTitle(getString(R.string.app_name))

navigationController = view.findNavController()

viewModel = getViewModel { CategoriesViewModel(CategoriesRepository()) }

adapter = CategoriesAdapter(viewModel::onCategoryClicked)

recycler = view.findViewById(R.id.recycler)
recycler.layoutManager = LinearLayoutManager(navHostActivity)
recycler.adapter = adapter

viewModel.model.observe(this, Observer(::updateUi))
}

private fun updateUi(model: CategoriesViewModel.UiModel) {
val context = this.context ?: return
when (model) {
is CategoriesViewModel.UiModel.Content -> adapter.categories = model.categories
is CategoriesViewModel.UiModel.Navigation -> {
when (model.categoryName) {
CHARACTERS -> navigationController.navigate(R.id.action_categoriesFragment_to_charactersFragment)
COMICS -> navigationController.navigate(R.id.action_categoriesFragment_to_comicsFragment)
EVENTS -> navigationController.navigate(R.id.action_categoriesFragment_to_eventsFragment)
else -> Toast.makeText(context, NOT_FOUND, Toast.LENGTH_SHORT).show()
}
}
}
}
}

This file was deleted.

Loading