Upgrade targetSdkVersion from 28 to 29

bs
Laurent 5 years ago
parent b2c11c266d
commit 0671994bba
  1. 16
      app/build.gradle
  2. 4
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt
  4. 9
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  5. 8
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/BaseActivity.kt
  6. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  7. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt
  8. 10
      app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt
  9. 3
      app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FiltersFragment.kt
  10. 2
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt
  11. 2
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerAnimator.kt
  12. 38
      app/src/main/java/net/pokeranalytics/android/util/ImageUtils.kt
  13. 4
      app/src/main/java/net/pokeranalytics/android/util/Preferences.kt
  14. 7
      app/src/main/java/net/pokeranalytics/android/util/csv/CSVField.kt
  15. 5
      app/src/main/java/net/pokeranalytics/android/util/video/MMediaMuxer.kt

@ -14,7 +14,7 @@ repositories {
android {
compileSdkVersion 28
compileSdkVersion 29
buildToolsVersion "28.0.3"
compileOptions {
@ -33,7 +33,7 @@ android {
defaultConfig {
applicationId "net.pokeranalytics.android"
minSdkVersion 23
targetSdkVersion 28
targetSdkVersion 29
versionCode 96
versionName "5.0.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -65,7 +65,7 @@ android {
}
}
flavorDimensions 'endOfUse'
productFlavors {
productFlavors { // already used: 50000, 51000, 52000
standard {
dimension = 'endOfUse'
}
@ -74,16 +74,6 @@ android {
versionNameSuffix = '_april2021'
versionCode = 52100 + android.defaultConfig.versionCode
}
june2020 {
dimension = 'endOfUse'
versionNameSuffix = '_june2020'
versionCode = 52000 + android.defaultConfig.versionCode
}
august2020 {
dimension = 'endOfUse'
versionNameSuffix = '_august2020'
versionCode = 50000 + android.defaultConfig.versionCode
}
}
configurations {

@ -814,8 +814,8 @@ sealed class QueryCondition : FilterElementRow {
}
is EndedToTime -> {
val calendar = Calendar.getInstance()
singleValue?.let {
calendar.time = singleValue
singleValue?.let { date ->
calendar.time = date
realmQuery.lessThanOrEqualTo(fieldName, calendar.hourMinute())
if (otherQueryCondition is StartedFromTime) {
otherQueryCondition.singleValue?.let { startTime ->

@ -31,7 +31,7 @@ open class Currency : RealmObject() {
field = value
} catch (e: Exception) {
// make app crash earlier than later, possibly to show an error message to the user in the future
throw PAIllegalStateException(e.localizedMessage)
throw PAIllegalStateException(e.localizedMessage ?: e.toString())
}
}

@ -199,7 +199,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
this.updateTimeParameter(field)
this.computeNetDuration()
// nullifies endate when setting the start date after the end date
// nullifies enddate when setting the start date after the end date
if (value != null && this.endDate != null && value.after(this.endDate)) {
this.endDate = null
}
@ -1117,7 +1117,12 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
// Stat Entry
override fun entryTitle(context: Context): String {
return DateFormat.getDateInstance(DateFormat.SHORT).format(this.startDate)
val date = this.startDate
return if (date != null) {
DateFormat.getDateInstance(DateFormat.SHORT).format(date)
} else {
"Date missing"
}
}
override fun formattedValue(stat: Stat): TextFormat {

@ -93,11 +93,9 @@ abstract class BaseActivity : AppCompatActivity() {
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
item?.let {
if (it.itemId == android.R.id.home) {
onBackPressed()
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == android.R.id.home) {
onBackPressed()
}
return super.onOptionsItemSelected(item)
}

@ -16,6 +16,7 @@ import io.realm.Realm
import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.BuildConfig
import net.pokeranalytics.android.R
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.realm.Currency
import net.pokeranalytics.android.model.realm.Session
@ -86,7 +87,8 @@ class SettingsFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRep
RequestCode.CURRENCY.value -> {
if (resultCode == Activity.RESULT_OK) {
data?.let {
Preferences.setCurrencyCode(data.getStringExtra(CurrenciesFragment.INTENT_CURRENCY_CODE), requireContext())
val currencyCode = data.getStringExtra(CurrenciesFragment.INTENT_CURRENCY_CODE) ?: throw PAIllegalStateException("Missing currency code")
Preferences.setCurrencyCode(currencyCode, requireContext())
val realm = Realm.getDefaultInstance()
realm.executeTransaction {
realm.where(Currency::class.java).isNull("code").or().equalTo("code", UserDefaults.currency.currencyCode).findAll().forEach { currency ->

@ -18,6 +18,7 @@ import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputableGroup
import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.filter.Query
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.ComputableResult
@ -94,7 +95,8 @@ class StatisticsFragment : FilterableFragment() {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == FilterActivityRequestCode.CREATE_FILTER.ordinal && resultCode == Activity.RESULT_OK) {
data?.let {
this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName))
val filterId = it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName) ?: throw PAIllegalStateException("Missing filter id")
this.saveFilter(this.requireContext(), filterId)
}
}
}

@ -39,7 +39,6 @@ import net.pokeranalytics.android.util.Preferences
import net.pokeranalytics.android.util.billing.AppGuard
import net.pokeranalytics.android.util.extensions.count
import timber.log.Timber
import java.text.SimpleDateFormat
import java.util.*
class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
@ -73,7 +72,6 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
private lateinit var realmTransactions: RealmResults<Transaction>
private lateinit var realmHandHistories: RealmResults<HandHistory>
private lateinit var betaLimitDate: Date
private var newSessionCreated: Boolean = false
private var adapterHasBeenSet: Boolean = false
@ -194,10 +192,8 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
}
} else if (requestCode == FilterActivityRequestCode.CREATE_FILTER.ordinal && resultCode == RESULT_OK) {
data?.let {
this.saveFilter(
this.requireContext(),
it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName)
)
val filterId = it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName) ?: throw PAIllegalStateException("Missing filter id")
this.saveFilter(this.requireContext(), filterId)
}
} else if (requestCode == RequestCode.NEW_TRANSACTION.value && resultCode == RESULT_OK) {
this.selectTab(Tab.TRANSACTIONS)
@ -325,8 +321,6 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
*/
private fun initData() {
val sdf = SimpleDateFormat("dd/M/yyyy hh:mm", Locale.getDefault())
betaLimitDate = sdf.parse("17/7/2019 10:00")
this.currentFilterable = FilterableType.SESSION
val viewManager = SmoothScrollLinearLayoutManager(requireContext())

@ -13,6 +13,7 @@ import kotlinx.android.synthetic.main.fragment_editable_data.recyclerView
import kotlinx.android.synthetic.main.fragment_filters.*
import kotlinx.android.synthetic.main.fragment_filters.view.toolbar
import net.pokeranalytics.android.R
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
@ -67,7 +68,7 @@ open class FiltersFragment : RealmFragment(), RowRepresentableDelegate {
updateMostUsedFilters()
if (resultCode == RESULT_OK && data != null && data.hasExtra(FiltersActivity.IntentKey.FILTER_ID.keyName)) {
val filterId = data.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName)
val filterId = data.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName) ?: throw PAIllegalStateException("Missing filter id")
finishActivityWithResult(filterId)
}
}

@ -523,7 +523,7 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra
val amount = try {
this.currentAmount?.let {
DecimalFormat.getNumberInstance().parse(it).toDouble()
DecimalFormat.getNumberInstance().parse(it)?.toDouble()
}
// this.currentAmount?.toDouble()
} catch (e: NumberFormatException) {

@ -484,7 +484,7 @@ class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) {
// Timber.d("STEP [$index] >> ($handStep): Frame count = ${this.frameManager.totalFrames}")
(0 until this.frameManager.totalFrames).forEach { f ->
(0 until this.frameManager.totalFrames).forEach { _ ->
// Timber.d("FRAME [$f] >> step: $currentStepIndex, frame: $currentFrameIndex, vo: ${this.visualOccurences}, type: ${this.frameType}")
val bitmap = Bitmap.createBitmap(this.width.toInt(), this.height.toInt(), Bitmap.Config.ARGB_8888)

@ -265,21 +265,7 @@ object ImageUtils {
}
}
/**
* Update the gallery with the current file
*
* @param context Context
* @param filePath The file to add
*/
fun updateGallery(context: Context, filePath: String) {
val mediaScanIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
val f = File(filePath)
val contentUri = Uri.fromFile(f)
mediaScanIntent.data = contentUri
context.sendBroadcast(mediaScanIntent)
}
/**
* Save the bitmap in a file
*/
@ -312,27 +298,5 @@ object ImageUtils {
}
}
/**
* Bitmap resizer
*/
fun bitmapResizer(bitmap: Bitmap, newWidth: Int, newHeight: Int): Bitmap {
val scaledBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.ARGB_8888)
val ratioX = newWidth / bitmap.width.toFloat()
val ratioY = newHeight / bitmap.height.toFloat()
val middleX = newWidth / 2.0f
val middleY = newHeight / 2.0f
val scaleMatrix = Matrix()
scaleMatrix.setScale(ratioX, ratioY, middleX, middleY)
val canvas = Canvas(scaledBitmap)
canvas.matrix = scaleMatrix
canvas.drawBitmap(bitmap, middleX - bitmap.width / 2, middleY - bitmap.height / 2, Paint(FILTER_BITMAP_FLAG))
return scaledBitmap
}
}

@ -132,9 +132,9 @@ class Preferences {
private fun getCurrencyLocale(context: Context): Locale? {
getCurrencyCode(context)?.let { currencyCode ->
UserDefaults.availableCurrencyLocales.filter {
UserDefaults.availableCurrencyLocales.firstOrNull {
Currency.getInstance(it).currencyCode == currencyCode
}.firstOrNull()?.let {
}?.let {
return it
}
}

@ -5,7 +5,6 @@ import net.pokeranalytics.android.model.realm.TournamentFeature
import net.pokeranalytics.android.util.CSVNumberFormat
import timber.log.Timber
import java.text.DateFormat
import java.text.NumberFormat
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.*
@ -26,7 +25,7 @@ interface NumberCSVField: TypedCSVField<Double> {
// val formatter = NumberFormat.getInstance(Locale.US)
return try {
CSVNumberFormat.parse(value).toDouble()
CSVNumberFormat.parse(value)?.toDouble()
} catch (e: ParseException) {
Timber.d("Field > Unparseable number: $value")
null
@ -47,7 +46,7 @@ interface NumberCSVField: TypedCSVField<Double> {
// val formatter = NumberFormat.getInstance(Locale.US)
return try {
CSVNumberFormat.parse(value).toDouble()
CSVNumberFormat.parse(value)?.toDouble()
} catch (e: ParseException) {
Timber.d("Field $header > Unparseable number: $value")
null
@ -72,7 +71,7 @@ interface IntCSVField: TypedCSVField<Int> {
}
return try {
CSVNumberFormat.parse(value).toInt()
CSVNumberFormat.parse(value)?.toInt()
} catch (e: ParseException) {
Timber.d("Field $header > Unparseable number: $value")
null

@ -188,11 +188,12 @@ class MMediaMuxer {
try {
val formattedDate = Date().dateTimeFileFormatted
outputPath = File(
val path = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES),
"video_${formattedDate}.mp4"
).toString()
mediaMuxer = MediaMuxer(outputPath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4)
outputPath = path
mediaMuxer = MediaMuxer(path, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4)
} catch (ioe: IOException) {
Loge("MediaMuxer creation failed: ${ioe.message}")
}

Loading…
Cancel
Save