Skip to content

Commit 7d115bd

Browse files
committed
Verified working in API Level 21
- Newer (than 2.13.x) versions of jackson does not work on API level < 26 in android FasterXML/jackson-databind#3702 - Unlinked LettersTabViewModel and Transliterator instantiation Transliterator instantiation now uses fragment context instead of application context - Removed unused references to previously tested progress bar
1 parent d204d6e commit 7d115bd

File tree

5 files changed

+19
-23
lines changed

5 files changed

+19
-23
lines changed

app/build.gradle

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,16 @@ dependencies {
6161
implementation 'com.google.android.material:material:1.7.0'
6262
implementation 'androidx.preference:preference:1.2.0'
6363
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
64-
implementation 'androidx.fragment:fragment:1.5.4'
64+
implementation 'androidx.fragment:fragment:1.5.5'
6565
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
6666
implementation 'androidx.gridlayout:gridlayout:1.0.0'
6767
implementation 'androidx.window:window:1.0.0'
6868
implementation 'androidx.annotation:annotation:1.5.0'
6969
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
70-
implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.0'
71-
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.14.0'
70+
// Newer (than 2.13.x) versions of jackson does not work on API level < 26 in android
71+
// https://github.com/FasterXML/jackson-databind/issues/3702
72+
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4'
73+
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.13.4'
7274
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
7375
implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
7476
implementation 'androidx.core:core-ktx:1.9.0'

app/src/main/kotlin/in/digistorm/aksharam/activities/main/letters/LettersTabFragment.kt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import android.widget.*
2929
import androidx.fragment.app.Fragment
3030
import androidx.fragment.app.viewModels
3131
import androidx.recyclerview.widget.RecyclerView
32-
import com.google.android.material.progressindicator.LinearProgressIndicator
3332
import com.google.android.material.textfield.MaterialAutoCompleteTextView
3433
import com.google.android.material.textfield.TextInputLayout
3534
import kotlin.collections.ArrayList
@@ -68,7 +67,9 @@ class LettersTabFragment: Fragment() {
6867
super.onViewCreated(view, savedInstanceState)
6968
logDebug(logTag, "onViewCreated")
7069

71-
logDebug(logTag, "Letters category wise: ${viewModel.transliterator.languageData.lettersCategoryWise}")
70+
// Initialise the transliterator
71+
viewModel.transliterator = Transliterator(requireContext())
72+
logDebug(logTag, "Letters category wise: ${viewModel.transliterator!!.languageData.lettersCategoryWise}")
7273
letterCategoryListView = view.findViewById(R.id.letter_categories)!!
7374
languageSelector = view.findViewById(R.id.language_selector)
7475
convertToSelector = view.findViewById(R.id.convert_to_selector)
@@ -80,8 +81,9 @@ class LettersTabFragment: Fragment() {
8081
view.findViewById<View>(R.id.lettersTabInfoButton).setOnClickListener { v: View? ->
8182
logDebug(logTag, "Info button clicked!")
8283
logDebug(logTag,
83-
"Fetching info for transliterating ${viewModel.transliterator.languageData.language} to ${viewModel.targetLanguage}")
84-
val info: HashMap<String, Map<String, String>> = viewModel.transliterator.languageData.info
84+
"Fetching info for transliterating ${viewModel.transliterator!!.languageData.language} " +
85+
"to ${viewModel.targetLanguage}")
86+
val info: HashMap<String, Map<String, String>> = viewModel.transliterator!!.languageData.info
8587
logDebug(logTag, "Data for info: $info")
8688
val lif = LanguageInfoFragment.newInstance(
8789
info["general"]?.get("en") + info[viewModel.targetLanguage.lowercase()]?.get("en"))
@@ -90,15 +92,14 @@ class LettersTabFragment: Fragment() {
9092

9193
val categoryListViewAdapter = LetterCategoryAdapter(
9294
viewModel.getLanguageData().lettersCategoryWise,
93-
viewModel.transliterator,
95+
viewModel.transliterator!!,
9496
viewModel.targetLanguage,
9597
)
9698
letterCategoryListView.adapter = categoryListViewAdapter
97-
categoryListViewAdapter.submitList(viewModel.transliterator.languageData.categories)
99+
categoryListViewAdapter.submitList(viewModel.transliterator!!.languageData.categories)
98100

99101
logDebug(logTag, "Setting up observers for view model data")
100102
initObservers(view)
101-
view.findViewById<LinearProgressIndicator>(R.id.progress_indicator).visibility = View.GONE
102103
}
103104

104105
// Return an empty array list if we could not find any
@@ -123,7 +124,7 @@ class LettersTabFragment: Fragment() {
123124
languageListAdapter.setNotifyOnChange(true)
124125

125126
languageTextView?.setAdapter(languageListAdapter)
126-
val upperCasedLanguage = viewModel.transliterator.getLanguage().replaceFirstChar {
127+
val upperCasedLanguage = viewModel.transliterator!!.getLanguage().replaceFirstChar {
127128
if (it.isLowerCase())
128129
it.titlecase()
129130
else
@@ -215,7 +216,7 @@ class LettersTabFragment: Fragment() {
215216
(letterCategoryListView.adapter as LetterCategoryAdapter).apply {
216217
setLettersCategoryWise(viewModel.getLanguageData().lettersCategoryWise)
217218
updateTargetLanguage(viewModel.targetLanguage)
218-
updateTransliterator(viewModel.transliterator)
219+
updateTransliterator(viewModel.transliterator!!)
219220
logDebug(logTag, "LetterCategoryAdapter Inspection: \n" +
220221
"Item count: ${itemCount} \n" +
221222
"Current List: ${currentList}")
@@ -240,7 +241,5 @@ class LettersTabFragment: Fragment() {
240241
adapter.updateLetterGrids(letterCategoryListView)
241242
}
242243
}
243-
244-
245244
}
246245
}

app/src/main/kotlin/in/digistorm/aksharam/activities/main/letters/LettersTabViewModel.kt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import androidx.lifecycle.MutableLiveData
3131
class LettersTabViewModel(application: Application): AndroidViewModel(application) {
3232
private val logTag = javaClass.simpleName
3333

34-
var transliterator: Transliterator = Transliterator(application)
34+
var transliterator: Transliterator? = null
3535

3636
// The current language displayed in letters tab
3737
var languageLiveData: MutableLiveData<String> = MutableLiveData()
@@ -54,18 +54,14 @@ class LettersTabViewModel(application: Application): AndroidViewModel(applicatio
5454
targetLanguageLiveData.value = value
5555
}
5656

57-
init {
58-
// language = transliterator.getLanguage()
59-
}
60-
6157
// Set the transliterator based on a specific language
6258
fun setTransliterator(language: String, context: Context) {
63-
if (transliterator.getLanguage().lowercase() != language.lowercase())
59+
if (transliterator!!.getLanguage().lowercase() != language.lowercase())
6460
transliterator = Transliterator(language, context)
6561
}
6662

6763
// A convenience method to obtain language data
6864
fun getLanguageData(): Language {
69-
return transliterator.languageData
65+
return transliterator!!.languageData
7066
}
7167
}

app/src/main/kotlin/in/digistorm/aksharam/activities/main/practice/InputTextChangedListener.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class InputTextChangedListener(
1717

1818
private val viewModel: PracticeTabViewModel by practiceTabFragment.viewModels()
1919
private val practiceTextTV: TextView = practiceTabFragment.requireView()
20-
.requireViewById(R.id.PracticeTabPracticeTextTV)
20+
.findViewById(R.id.PracticeTabPracticeTextTV)!!
2121

2222
override fun afterTextChanged(s: Editable) {}
2323
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}

app/src/main/kotlin/in/digistorm/aksharam/util/Transliterator.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import android.content.Context
2323
import android.content.Intent
2424
import java.lang.StringBuilder
2525
import `in`.digistorm.aksharam.activities.initialise.InitialiseAppActivity
26-
import kotlin.math.log
2726

2827
// This class is responsible for the actual transliteration
2928
class Transliterator {

0 commit comments

Comments
 (0)