Skip to content

Commit 9fa122a

Browse files
authored
Merge pull request #90 from infinum/develop
Courtesy PR
2 parents 8758f55 + a5ebafc commit 9fa122a

File tree

12 files changed

+91
-31
lines changed

12 files changed

+91
-31
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
Changelog
22
=========
33

4+
## Version 5.3.3
5+
6+
_2021-04-30_
7+
8+
* Fix refreshing schema or content when editor has affected rows.
9+
410
## Version 5.3.2
511

612
_2021-04-26_

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ Then add the following dependencies in your app `build.gradle` or `build.gradle.
4444

4545
**Groovy**
4646
```groovy
47-
debugImplementation "com.infinum.dbinspector:dbinspector:5.3.2"
48-
releaseImplementation "com.infinum.dbinspector:dbinspector-no-op:5.3.2"
47+
debugImplementation "com.infinum.dbinspector:dbinspector:5.3.3"
48+
releaseImplementation "com.infinum.dbinspector:dbinspector-no-op:5.3.3"
4949
```
5050
**KotlinDSL**
5151
```kotlin
52-
debugImplementation("com.infinum.dbinspector:dbinspector:5.3.2")
53-
releaseImplementation("com.infinum.dbinspector:dbinspector-no-op:5.3.2")
52+
debugImplementation("com.infinum.dbinspector:dbinspector:5.3.3")
53+
releaseImplementation("com.infinum.dbinspector:dbinspector-no-op:5.3.3")
5454
```
5555

5656
### Usage

build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
build.debug=true
1+
build.debug=false

config.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ext {
77
]
88
releaseConfig = [
99
"group" : "com.infinum.dbinspector",
10-
"version" : "5.3.2",
11-
"versionCode": 5 * 100 * 100 + 3 * 100 + 2
10+
"version" : "5.3.3",
11+
"versionCode": 5 * 100 * 100 + 3 * 100 + 3
1212
]
1313
}

dbinspector/src/main/kotlin/com/infinum/dbinspector/ui/content/shared/ContentActivity.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.app.Activity
44
import android.content.DialogInterface
55
import android.content.Intent
66
import android.os.Bundle
7+
import androidx.activity.result.ActivityResultLauncher
78
import androidx.annotation.MenuRes
89
import androidx.annotation.StringRes
910
import androidx.paging.LoadState
@@ -22,6 +23,7 @@ import com.infinum.dbinspector.ui.content.view.ViewViewModel
2223
import com.infinum.dbinspector.ui.pragma.PragmaActivity
2324
import com.infinum.dbinspector.ui.shared.base.BaseActivity
2425
import com.infinum.dbinspector.ui.shared.base.lifecycle.LifecycleConnection
26+
import com.infinum.dbinspector.ui.shared.contracts.EditContract
2527
import com.infinum.dbinspector.ui.shared.delegates.lifecycleConnection
2628
import com.infinum.dbinspector.ui.shared.delegates.viewBinding
2729
import com.infinum.dbinspector.ui.shared.edgefactories.bounce.BounceEdgeEffectFactory
@@ -50,13 +52,21 @@ internal abstract class ContentActivity : BaseActivity() {
5052

5153
private lateinit var contentAdapter: ContentAdapter
5254

55+
private lateinit var contract: ActivityResultLauncher<EditContract.Input>
56+
5357
override fun onCreate(savedInstanceState: Bundle?) {
5458
super.onCreate(savedInstanceState)
5559

5660
binding.toolbar.setNavigationOnClickListener { finish() }
5761

5862
contentPreviewFactory = ContentPreviewFactory(this)
5963

64+
contract = registerForActivityResult(EditContract()) { shouldRefresh ->
65+
if (shouldRefresh) {
66+
contentAdapter.refresh()
67+
}
68+
}
69+
6070
if (connection.hasSchemaData) {
6171
viewModel.databasePath = connection.databasePath!!
6272
viewModel.open()
@@ -105,6 +115,11 @@ internal abstract class ContentActivity : BaseActivity() {
105115
}
106116
}
107117

118+
override fun onDestroy() {
119+
contract.unregister()
120+
super.onDestroy()
121+
}
122+
108123
private fun setupUi(databasePath: String, databaseName: String, schemaName: String) {
109124
with(binding.toolbar) {
110125
title = getString(this@ContentActivity.title)
@@ -125,7 +140,7 @@ internal abstract class ContentActivity : BaseActivity() {
125140
true
126141
}
127142
R.id.edit -> {
128-
contentPreviewFactory.showEdit(databasePath, databaseName)
143+
showEdit(databasePath, databaseName)
129144
true
130145
}
131146
else -> false
@@ -198,4 +213,12 @@ internal abstract class ContentActivity : BaseActivity() {
198213
)
199214
finish()
200215
}
216+
217+
private fun showEdit(databasePath: String, databaseName: String) =
218+
contract.launch(
219+
EditContract.Input(
220+
databasePath = databasePath,
221+
databaseName = databaseName
222+
)
223+
)
201224
}

dbinspector/src/main/kotlin/com/infinum/dbinspector/ui/content/shared/ContentPreviewFactory.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.content.ClipData
66
import android.content.ClipboardManager
77
import android.content.Context
88
import android.content.DialogInterface
9-
import android.content.Intent
109
import android.graphics.BitmapFactory
1110
import android.text.format.Formatter
1211
import android.view.LayoutInflater
@@ -21,8 +20,6 @@ import com.infinum.dbinspector.domain.schema.shared.models.ImageType
2120
import com.infinum.dbinspector.domain.shared.models.Cell
2221
import com.infinum.dbinspector.extensions.toChecksum
2322
import com.infinum.dbinspector.extensions.toUtf8String
24-
import com.infinum.dbinspector.ui.Presentation
25-
import com.infinum.dbinspector.ui.edit.EditActivity
2623
import java.io.File
2724
import java.io.FileOutputStream
2825

@@ -32,15 +29,6 @@ internal class ContentPreviewFactory(
3229

3330
private val clipboardManager = activity.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager
3431

35-
fun showEdit(databasePath: String, databaseName: String) =
36-
activity.startActivity(
37-
Intent(activity, EditActivity::class.java)
38-
.apply {
39-
putExtra(Presentation.Constants.Keys.DATABASE_PATH, databasePath)
40-
putExtra(Presentation.Constants.Keys.DATABASE_NAME, databaseName)
41-
}
42-
)
43-
4432
fun showCell(cell: Cell) {
4533
cell.data?.let { bytes ->
4634
when (cell.imageType) {

dbinspector/src/main/kotlin/com/infinum/dbinspector/ui/edit/EditActivity.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.infinum.dbinspector.ui.edit
22

3+
import android.app.Activity
4+
import android.content.Intent
35
import android.os.Bundle
46
import androidx.core.view.isVisible
57
import androidx.core.widget.doOnTextChanged
@@ -12,6 +14,7 @@ import com.infinum.dbinspector.R
1214
import com.infinum.dbinspector.databinding.DbinspectorActivityEditBinding
1315
import com.infinum.dbinspector.domain.shared.models.Cell
1416
import com.infinum.dbinspector.extensions.setupAsTable
17+
import com.infinum.dbinspector.ui.Presentation
1518
import com.infinum.dbinspector.ui.content.shared.ContentAdapter
1619
import com.infinum.dbinspector.ui.content.shared.ContentPreviewFactory
1720
import com.infinum.dbinspector.ui.edit.history.HistoryDialog
@@ -189,6 +192,12 @@ internal class EditActivity : BaseActivity(), HistoryDialog.Listener {
189192
rowCount
190193
)
191194
}
195+
setResult(
196+
Activity.RESULT_OK,
197+
Intent().apply {
198+
putExtra(Presentation.Constants.Keys.SHOULD_REFRESH, true)
199+
}
200+
)
192201
}
193202

194203
private fun showError(message: String?) {

dbinspector/src/main/kotlin/com/infinum/dbinspector/ui/schema/SchemaActivity.kt

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
package com.infinum.dbinspector.ui.schema
22

3-
import android.content.Intent
43
import android.os.Bundle
4+
import androidx.activity.result.ActivityResultLauncher
55
import com.google.android.material.tabs.TabLayoutMediator
66
import com.infinum.dbinspector.R
77
import com.infinum.dbinspector.databinding.DbinspectorActivitySchemaBinding
88
import com.infinum.dbinspector.domain.schema.shared.models.SchemaType
99
import com.infinum.dbinspector.extensions.searchView
1010
import com.infinum.dbinspector.extensions.setup
1111
import com.infinum.dbinspector.extensions.uppercase
12-
import com.infinum.dbinspector.ui.Presentation
13-
import com.infinum.dbinspector.ui.edit.EditActivity
12+
import com.infinum.dbinspector.ui.schema.shared.SchemaFragment
1413
import com.infinum.dbinspector.ui.schema.shared.SchemaTypeAdapter
1514
import com.infinum.dbinspector.ui.shared.base.BaseActivity
1615
import com.infinum.dbinspector.ui.shared.base.lifecycle.LifecycleConnection
16+
import com.infinum.dbinspector.ui.shared.contracts.EditContract
1717
import com.infinum.dbinspector.ui.shared.delegates.lifecycleConnection
1818
import com.infinum.dbinspector.ui.shared.delegates.viewBinding
1919
import com.infinum.dbinspector.ui.shared.searchable.Searchable
@@ -27,6 +27,8 @@ internal class SchemaActivity : BaseActivity(), Searchable {
2727

2828
private val connection: LifecycleConnection by lifecycleConnection()
2929

30+
private lateinit var contract: ActivityResultLauncher<EditContract.Input>
31+
3032
override fun onCreate(savedInstanceState: Bundle?) {
3133
super.onCreate(savedInstanceState)
3234

@@ -39,9 +41,18 @@ internal class SchemaActivity : BaseActivity(), Searchable {
3941
} else {
4042
showDatabaseParametersError()
4143
}
44+
45+
contract = registerForActivityResult(EditContract()) { shouldRefresh ->
46+
if (shouldRefresh) {
47+
supportFragmentManager.fragments
48+
.filterIsInstance<SchemaFragment>()
49+
.forEach { it.refresh() }
50+
}
51+
}
4252
}
4353

4454
override fun onDestroy() {
55+
contract.unregister()
4556
viewModel.close()
4657
super.onDestroy()
4758
}
@@ -93,11 +104,10 @@ internal class SchemaActivity : BaseActivity(), Searchable {
93104
}
94105

95106
private fun showEdit(databasePath: String, databaseName: String) =
96-
startActivity(
97-
Intent(this, EditActivity::class.java)
98-
.apply {
99-
putExtra(Presentation.Constants.Keys.DATABASE_PATH, databasePath)
100-
putExtra(Presentation.Constants.Keys.DATABASE_NAME, databaseName)
101-
}
107+
contract.launch(
108+
EditContract.Input(
109+
databasePath = databasePath,
110+
databaseName = databaseName
111+
)
102112
)
103113
}

dbinspector/src/main/kotlin/com/infinum/dbinspector/ui/schema/shared/SchemaFragment.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ internal abstract class SchemaFragment :
107107
query(query)
108108
}
109109

110+
fun refresh() = schemaAdapter.refresh()
111+
110112
private fun query(query: String?) {
111113
viewModel.query(databasePath, query) {
112114
schemaAdapter.submitData(it)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.infinum.dbinspector.ui.shared.contracts
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import com.infinum.dbinspector.ui.Presentation
6+
import com.infinum.dbinspector.ui.edit.EditActivity
7+
import com.infinum.dbinspector.ui.shared.base.BaseContract
8+
9+
internal class EditContract : BaseContract<EditContract.Input>() {
10+
11+
override fun createIntent(context: Context, input: Input): Intent =
12+
Intent(context, EditActivity::class.java)
13+
.apply {
14+
putExtra(Presentation.Constants.Keys.DATABASE_PATH, input.databasePath)
15+
putExtra(Presentation.Constants.Keys.DATABASE_NAME, input.databaseName)
16+
}
17+
18+
data class Input(
19+
val databaseName: String,
20+
val databasePath: String
21+
) : BaseContract.Input
22+
}

0 commit comments

Comments
 (0)