From c7223ed02bdad91c7b4b41c2536cc1f545fdc871 Mon Sep 17 00:00:00 2001 From: fknives Date: Tue, 18 May 2021 23:32:27 +0300 Subject: [PATCH] Fix issue if stock didn't had a percentage change, then it wasn't included in the list --- .idea/misc.xml | 2 +- app/build.gradle | 1 - .../fknives/rstocklist/appsync/ParseTicker.kt | 4 ++-- .../fknives/rstocklist/appsync/SyncService.kt | 19 ++++++++++++++++--- .../appsync/TraverseRecyclerView.kt | 9 ++++++--- 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 7bfef59..d5d35ec 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 5720022..edff5c5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,6 @@ android { buildConfigField "String", "CONFIG_COMPANY_NAME_ID", "\"$COMPANY_NAME_ID\"" buildConfigField "String", "CONFIG_COMPANY_TICKER_ID", "\"$COMPANY_TICKER_ID\"" buildConfigField "String", "CONFIG_COMPANY_SHARE_PRICE_ID", "\"$COMPANY_SHARE_PRICE_ID\"" - buildConfigField "String", "CONFIG_COMPANY_CHANGE_PERCENT_ID", "\"$COMPANY_CHANGE_PERCENT_ID\"" buildConfigField "String", "CONFIG_RECYCLER_ID1", "\"$RECYCLER_ID1\"" buildConfigField "String", "CONFIG_RECYCLER_ID2", "\"$RECYCLER_ID2\"" applicationId "org.fknives.rstocklist" diff --git a/app/src/main/java/org/fknives/rstocklist/appsync/ParseTicker.kt b/app/src/main/java/org/fknives/rstocklist/appsync/ParseTicker.kt index b9cc435..10c4518 100644 --- a/app/src/main/java/org/fknives/rstocklist/appsync/ParseTicker.kt +++ b/app/src/main/java/org/fknives/rstocklist/appsync/ParseTicker.kt @@ -15,6 +15,7 @@ class ParseTicker { ?.firstOrNull() ?.trim() } else { + System.err.println("couldnt process item: ${accessibilityNodeInfo.findAccessibilityNodeInfosByViewId(BuildConfig.CONFIG_COMPANY_TICKER_ID).map(AccessibilityNodeInfo::getText)}") null } @@ -26,8 +27,7 @@ class ParseTicker { BuildConfig.CONFIG_COMPANY_IMG_ID, BuildConfig.CONFIG_COMPANY_NAME_ID, BuildConfig.CONFIG_COMPANY_TICKER_ID, - BuildConfig.CONFIG_COMPANY_SHARE_PRICE_ID, - BuildConfig.CONFIG_COMPANY_CHANGE_PERCENT_ID + BuildConfig.CONFIG_COMPANY_SHARE_PRICE_ID ) diff --git a/app/src/main/java/org/fknives/rstocklist/appsync/SyncService.kt b/app/src/main/java/org/fknives/rstocklist/appsync/SyncService.kt index 240d54d..1a12d6d 100644 --- a/app/src/main/java/org/fknives/rstocklist/appsync/SyncService.kt +++ b/app/src/main/java/org/fknives/rstocklist/appsync/SyncService.kt @@ -24,10 +24,23 @@ class SyncService : AccessibilityService() { syncState = SyncState.WORKING traverseRecyclerView = object : TraverseRecyclerView(0) { val tickers = mutableListOf() + var foundRetried = 0 - override fun found(accessibilityNodeInfo: AccessibilityNodeInfo) { - parseTicker(accessibilityNodeInfo)?.let(tickers::add) - listener?.onItemProcessed(tickers.size - 1) + override fun found(accessibilityNodeInfo: AccessibilityNodeInfo): Boolean { + val ticker = parseTicker(accessibilityNodeInfo) + ticker?.let(tickers::add) + if (ticker == null) { + foundRetried++ + } else { + foundRetried = 0 + tickers.add(ticker) + listener?.onItemProcessed(tickers.size - 1) + } + if (foundRetried == 10) { + foundRetried = 0 + return true + } + return ticker != null } override fun finished() { diff --git a/app/src/main/java/org/fknives/rstocklist/appsync/TraverseRecyclerView.kt b/app/src/main/java/org/fknives/rstocklist/appsync/TraverseRecyclerView.kt index 47cb2bb..e7d5018 100644 --- a/app/src/main/java/org/fknives/rstocklist/appsync/TraverseRecyclerView.kt +++ b/app/src/main/java/org/fknives/rstocklist/appsync/TraverseRecyclerView.kt @@ -32,13 +32,16 @@ abstract class TraverseRecyclerView(private var index: Int) { } } else -> { - index++ - found(found) + if (found(found)) { + index++ + } else { + recyclerView.scrollBackward() + } } } } - protected abstract fun found(accessibilityNodeInfo: AccessibilityNodeInfo) + protected abstract fun found(accessibilityNodeInfo: AccessibilityNodeInfo): Boolean protected abstract fun finished()