diff --git a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt index 68f29b3..f471156 100644 --- a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt +++ b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt @@ -159,6 +159,8 @@ class MainActivity : AppCompatActivity() { true -> PowerPreference.getDefaultFile().set("scope", "me") false -> PowerPreference.getDefaultFile().set("scope", "all") } + + EventBus.send(Event.ListingsChanged) } R.id.settings -> startActivityForResult(Intent(this, SettingsActivity::class.java), 0) } diff --git a/app/src/main/java/com/github/apognu/otter/fragments/FunkwhaleFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/FunkwhaleFragment.kt index f12b7b9..63cab65 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/FunkwhaleFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/FunkwhaleFragment.kt @@ -9,14 +9,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.github.apognu.otter.repositories.HttpUpstream import com.github.apognu.otter.repositories.Repository -import com.github.apognu.otter.utils.Cache -import com.github.apognu.otter.utils.untilNetwork +import com.github.apognu.otter.utils.* import com.google.gson.Gson import kotlinx.android.synthetic.main.fragment_artists.* import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext abstract class FunkwhaleAdapter : RecyclerView.Adapter() { var data: MutableList = mutableListOf() @@ -31,6 +33,7 @@ abstract class FunkwhaleFragment> : Fragment lateinit var adapter: A private var initialFetched = false + private var listener: Job? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(viewRes, container, false) @@ -65,6 +68,19 @@ abstract class FunkwhaleFragment> : Fragment swiper?.setOnRefreshListener { fetch(Repository.Origin.Network.origin) } + + if (listener == null) { + listener = GlobalScope.launch(IO) { + EventBus.get().collect { event -> + if (event is Event.ListingsChanged) { + withContext(Main) { + swiper?.isRefreshing = true + fetch(Repository.Origin.Network.origin) + } + } + } + } + } } open fun onDataFetched(data: List) {} diff --git a/app/src/main/java/com/github/apognu/otter/repositories/HttpUpstream.kt b/app/src/main/java/com/github/apognu/otter/repositories/HttpUpstream.kt index 56ba7bf..6b08836 100644 --- a/app/src/main/java/com/github/apognu/otter/repositories/HttpUpstream.kt +++ b/app/src/main/java/com/github/apognu/otter/repositories/HttpUpstream.kt @@ -28,15 +28,16 @@ class HttpUpstream>(val behavior: Behavior, pr val page = ceil(size / AppContext.PAGE_SIZE.toDouble()).toInt() + 1 - val offsetUrl = + val url = Uri.parse(url) .buildUpon() .appendQueryParameter("page_size", AppContext.PAGE_SIZE.toString()) .appendQueryParameter("page", page.toString()) + .appendQueryParameter("scope", Settings.getScope()) .build() .toString() - get(offsetUrl).fold( + get(url).fold( { response -> val data = response.getData() diff --git a/app/src/main/java/com/github/apognu/otter/utils/EventBus.kt b/app/src/main/java/com/github/apognu/otter/utils/EventBus.kt index ba3b613..f57eace 100644 --- a/app/src/main/java/com/github/apognu/otter/utils/EventBus.kt +++ b/app/src/main/java/com/github/apognu/otter/utils/EventBus.kt @@ -43,6 +43,7 @@ sealed class Event { class StateChanged(val playing: Boolean) : Event() object QueueChanged : Event() object RadioStarted : Event() + object ListingsChanged : Event() } sealed class Request(var channel: Channel? = null) { diff --git a/app/src/main/res/menu-land/toolbar.xml b/app/src/main/res/menu-land/toolbar.xml index d5b02d1..794f648 100644 --- a/app/src/main/res/menu-land/toolbar.xml +++ b/app/src/main/res/menu-land/toolbar.xml @@ -15,6 +15,12 @@ android:title="@string/toolbar_search" app:showAsAction="ifRoom" /> + +