diff --git a/.idea/copyright/Apache.xml b/.idea/copyright/Apache.xml
deleted file mode 100644
index 3c72b283..00000000
--- a/.idea/copyright/Apache.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
index b1a28ee4..eaa059df 100644
--- a/.idea/copyright/profiles_settings.xml
+++ b/.idea/copyright/profiles_settings.xml
@@ -2,7 +2,6 @@
-
\ No newline at end of file
diff --git a/.idea/scopes/libpupil.xml b/.idea/scopes/libpupil.xml
deleted file mode 100644
index 9ad573e4..00000000
--- a/.idea/scopes/libpupil.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt
index 980903bd..c9806626 100644
--- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt
+++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt
@@ -33,15 +33,15 @@ import com.google.android.gms.security.ProviderInstaller
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import xyz.quaver.proxy
-import xyz.quaver.pupil.util.Histories
+import xyz.quaver.pupil.util.GalleryList
import xyz.quaver.pupil.util.getProxy
import java.io.File
import java.util.*
class Pupil : MultiDexApplication() {
- lateinit var histories: Histories
- lateinit var favorites: Histories
+ lateinit var histories: GalleryList
+ lateinit var favorites: GalleryList
init {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
@@ -71,8 +71,8 @@ class Pupil : MultiDexApplication() {
preference.edit().remove("dl_location").apply()
}
- histories = Histories(File(ContextCompat.getDataDir(this), "histories.json"))
- favorites = Histories(File(ContextCompat.getDataDir(this), "favorites.json"))
+ histories = GalleryList(File(ContextCompat.getDataDir(this), "histories.json"))
+ favorites = GalleryList(File(ContextCompat.getDataDir(this), "favorites.json"))
if (BuildConfig.DEBUG)
FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(false)
diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt
index 2daaa392..4a41afb2 100644
--- a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt
+++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt
@@ -53,7 +53,7 @@ import xyz.quaver.pupil.BuildConfig
import xyz.quaver.pupil.Pupil
import xyz.quaver.pupil.R
import xyz.quaver.pupil.types.Tag
-import xyz.quaver.pupil.util.Histories
+import xyz.quaver.pupil.util.GalleryList
import xyz.quaver.pupil.util.download.Cache
import xyz.quaver.pupil.util.wordCapitalize
import java.util.*
@@ -68,7 +68,7 @@ class GalleryBlockAdapter(private val glide: RequestManager, private val galleri
PREV
}
- private lateinit var favorites: Histories
+ private lateinit var favorites: GalleryList
val timer = Timer()
diff --git a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
index dcd9b1f7..3ff3a8b1 100644
--- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
+++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
@@ -109,8 +109,8 @@ class MainActivity : AppCompatActivity() {
private var loadingJob: Job? = null
private var currentPage = 0
- private lateinit var histories: Histories
- private lateinit var favorites: Histories
+ private lateinit var histories: GalleryList
+ private lateinit var favorites: GalleryList
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -1025,13 +1025,13 @@ class MainActivity : AppCompatActivity() {
Mode.HISTORY -> {
when {
query.isEmpty() -> {
- histories.toList().also {
+ histories.reversed().also {
totalItems = it.size
}
}
else -> {
val result = doSearch(query).sorted()
- histories.filter { result.binarySearch(it) >= 0 }.also {
+ histories.reversed().filter { result.binarySearch(it) >= 0 }.also {
totalItems = it.size
}
}
diff --git a/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt
index 0b579a81..d5a51c93 100644
--- a/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt
+++ b/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt
@@ -46,7 +46,7 @@ import xyz.quaver.Code
import xyz.quaver.pupil.Pupil
import xyz.quaver.pupil.R
import xyz.quaver.pupil.adapters.ReaderAdapter
-import xyz.quaver.pupil.util.Histories
+import xyz.quaver.pupil.util.GalleryList
import xyz.quaver.pupil.util.download.Cache
import xyz.quaver.pupil.util.download.DownloadWorker
import java.util.*
@@ -78,7 +78,7 @@ class ReaderActivity : AppCompatActivity() {
private var menu: Menu? = null
- private lateinit var favorites: Histories
+ private lateinit var favorites: GalleryList
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/app/src/main/java/xyz/quaver/pupil/util/history.kt b/app/src/main/java/xyz/quaver/pupil/util/GalleryList.kt
similarity index 61%
rename from app/src/main/java/xyz/quaver/pupil/util/history.kt
rename to app/src/main/java/xyz/quaver/pupil/util/GalleryList.kt
index 59fde684..e5b30991 100644
--- a/app/src/main/java/xyz/quaver/pupil/util/history.kt
+++ b/app/src/main/java/xyz/quaver/pupil/util/GalleryList.kt
@@ -23,69 +23,57 @@ import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import java.io.File
-class Histories(private val file: File) : ArrayList() {
+class GalleryList(private val file: File, private val list: MutableSet = mutableSetOf()) : MutableSet by list {
init {
- if (!file.exists())
- file.parentFile?.mkdirs()
-
- try {
- load()
- } catch (e: Exception) {
- save()
- }
+ load()
}
- fun load() : Histories {
- return apply {
- super.clear()
- super.addAll(
- Json.decodeFromString(file.bufferedReader().use { it.readText() })
+ fun load() {
+ synchronized(this) {
+ if (!file.exists())
+ file.parentFile?.mkdirs()
+
+ list.clear()
+ list.addAll(
+ Json.decodeFromString>(file.bufferedReader().use { it.readText() })
)
}
}
fun save() {
- file.writeText(Json.encodeToString(toList()))
+ synchronized(this) {
+ file.writeText(Json.encodeToString(list))
+ }
}
override fun add(element: Int): Boolean {
load()
- if (contains(element))
- super.remove(element)
-
- super.add(0, element)
-
- save()
-
- return true
+ return list.add(element).also {
+ save()
+ }
}
override fun addAll(elements: Collection): Boolean {
load()
- for (e in elements) {
- if (contains(e))
- super.remove(e)
- super.add(0, e)
+ return list.addAll(elements).also {
+ save()
}
-
- save()
-
- return true
}
override fun remove(element: Int): Boolean {
load()
- val retval = super.remove(element)
- save()
- return retval
+ return list.remove(element).also {
+ save()
+ }
}
override fun clear() {
- super.clear()
+ list.clear()
save()
}
+
}
\ No newline at end of file
diff --git a/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt b/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt
index 7cb04979..d2dc194e 100644
--- a/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt
+++ b/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt
@@ -26,14 +26,14 @@ package xyz.quaver.pupil
* See [testing documentation](http://d.android.com/tools/testing).
*/
-import android.util.SparseArray
+import kotlinx.serialization.json.Json
import org.junit.Test
class ExampleUnitTest {
@Test
fun test() {
- val arr = SparseArray()
+
}
}