Skip to content

Commit 5c7aba8

Browse files
committed
fixed crash after deleting an item in the list of installed games
1 parent c4f62ff commit 5c7aba8

File tree

5 files changed

+23
-13
lines changed

5 files changed

+23
-13
lines changed

app/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ dependencies {
147147
implementation "ch.acra:acra-mail:$acraVersion"
148148
implementation "ch.acra:acra-notification:$acraVersion"
149149

150+
// Logging
151+
implementation 'com.jakewharton.timber:timber:4.7.1'
152+
150153
// LeakCanary
151154
//debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-3'
152155
}

app/src/main/kotlin/org/emunix/insteadlauncher/InsteadLauncher.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.emunix.insteadlauncher.di.AppComponent
2121
import org.emunix.insteadlauncher.di.AppModule
2222
import org.emunix.insteadlauncher.di.DaggerAppComponent
2323
import org.emunix.insteadlauncher.helpers.ThemeHelper
24+
import timber.log.Timber
2425

2526

2627
@AcraCore(stopServicesOnCrash = true,
@@ -58,6 +59,9 @@ class InsteadLauncher: Application() {
5859

5960
override fun onCreate() {
6061
super.onCreate()
62+
if(BuildConfig.DEBUG)
63+
Timber.plant(Timber.DebugTree())
64+
6165
appComponent = DaggerAppComponent.builder()
6266
.appModule(AppModule(this))
6367
.build()

app/src/main/kotlin/org/emunix/insteadlauncher/data/GameStateConverter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ class GameStateConverter {
1212
fun toState(ordinal: Int): Game.State = Game.State.values()[ordinal]
1313

1414
@TypeConverter
15-
fun toOrdinal(state: Game.State): Int? = state.ordinal
15+
fun toOrdinal(state: Game.State): Int = state.ordinal
1616
}

app/src/main/kotlin/org/emunix/insteadlauncher/ui/installedgames/InstalledGamesAdapter.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ import org.emunix.insteadlauncher.data.Game
1616
import org.emunix.insteadlauncher.helpers.loadUrl
1717
import androidx.recyclerview.widget.ListAdapter
1818
import org.emunix.insteadlauncher.data.GameDiffCallback
19+
import timber.log.Timber
1920

2021
class InstalledGamesAdapter(val onClickListener: (Game) -> Unit) : ListAdapter<Game, InstalledGamesAdapter.ViewHolder>(GameDiffCallback()) {
2122

22-
private lateinit var longClickedGame: Game
23-
24-
fun getLongClickedGame(): Game = longClickedGame
23+
lateinit var longClickedGame: Game
24+
private set
2525

2626
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
2727
val name = itemView.findViewById<TextView>(R.id.name)!!
@@ -33,16 +33,19 @@ class InstalledGamesAdapter(val onClickListener: (Game) -> Unit) : ListAdapter<G
3333
}
3434

3535
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
36-
holder.name.text = getItem(position).title
37-
holder.image.loadUrl(getItem(position).image)
38-
holder.itemView.setOnClickListener { onClickListener(getItem(position)) }
36+
val game = getItem(position)
37+
holder.name.text = game.title
38+
holder.image.loadUrl(game.image)
39+
holder.itemView.setOnClickListener { onClickListener(game) }
3940
holder.itemView.setOnLongClickListener {
40-
longClickedGame = getItem(position)
41+
Timber.d("Long clicked game: ${game.name}")
42+
longClickedGame = game
4143
false
4244
}
4345
}
4446

4547
override fun onViewRecycled(holder: ViewHolder) {
48+
holder.itemView.setOnClickListener(null)
4649
holder.itemView.setOnLongClickListener(null)
4750
super.onViewRecycled(holder)
4851
}

app/src/main/kotlin/org/emunix/insteadlauncher/ui/installedgames/InstalledGamesFragment.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class InstalledGamesFragment : Fragment() {
5959
viewModel.init()
6060

6161
viewModel.getInstalledGames().observe(viewLifecycleOwner) { games ->
62-
listAdapter.submitList(games)
62+
listAdapter.submitList(games.toList())
6363
binding.emptyView.visible(games.isEmpty())
6464
}
6565
}
@@ -72,19 +72,19 @@ class InstalledGamesFragment : Fragment() {
7272
override fun onContextItemSelected(item: MenuItem): Boolean {
7373
when (item.itemId) {
7474
R.id.installed_games_activity_context_menu_play -> {
75-
playGame(listAdapter.getLongClickedGame())
75+
playGame(listAdapter.longClickedGame)
7676
}
7777
R.id.installed_games_activity_context_menu_play_from_beginning -> {
78-
playGame(listAdapter.getLongClickedGame(), true)
78+
playGame(listAdapter.longClickedGame, true)
7979
}
8080
R.id.installed_games_activity_context_menu_delete -> {
81-
val deleteDialog = DeleteGameDialog.newInstance(listAdapter.getLongClickedGame().name)
81+
val deleteDialog = DeleteGameDialog.newInstance(listAdapter.longClickedGame.name)
8282
if (isAdded)
8383
parentFragmentManager.let { deleteDialog.show(it, "delete_dialog") }
8484
}
8585
R.id.installed_games_activity_context_menu_about -> {
8686
val intent = Intent(context, GameActivity::class.java)
87-
val gameName = listAdapter.getLongClickedGame().name
87+
val gameName = listAdapter.longClickedGame.name
8888
intent.putExtra("game_name", gameName)
8989
startActivity(intent)
9090
}

0 commit comments

Comments
 (0)