diff --git a/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt
index f4849930d..a3c6f7cf1 100644
--- a/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt
+++ b/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt
@@ -314,6 +314,8 @@ class MainActivity : BaseActivity() {
when (intent?.getStringExtra("fragmentToOpen")) {
"home" ->
navController.navigate(R.id.homeFragment)
+ "trends" ->
+ navController.navigate(R.id.trendsFragment)
"subscriptions" ->
navController.navigate(R.id.subscriptionsFragment)
"library" ->
diff --git a/app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt
index 648bb4285..a4d28b29a 100644
--- a/app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt
+++ b/app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt
@@ -1,30 +1,14 @@
package com.github.libretube.ui.fragments
-import android.content.Intent
import android.os.Bundle
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.Toast
-import androidx.lifecycle.lifecycleScope
-import com.github.libretube.R
-import com.github.libretube.api.RetrofitInstance
-import com.github.libretube.constants.PreferenceKeys
import com.github.libretube.databinding.FragmentHomeBinding
-import com.github.libretube.extensions.TAG
-import com.github.libretube.ui.activities.SettingsActivity
-import com.github.libretube.ui.adapters.VideosAdapter
import com.github.libretube.ui.base.BaseFragment
-import com.github.libretube.util.LocaleHelper
-import com.github.libretube.util.PreferenceHelper
-import com.google.android.material.snackbar.Snackbar
-import retrofit2.HttpException
-import java.io.IOException
class HomeFragment : BaseFragment() {
private lateinit var binding: FragmentHomeBinding
- private lateinit var region: String
override fun onCreateView(
inflater: LayoutInflater,
@@ -34,74 +18,4 @@ class HomeFragment : BaseFragment() {
binding = FragmentHomeBinding.inflate(layoutInflater, container, false)
return binding.root
}
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- val regionPref = PreferenceHelper.getString(PreferenceKeys.REGION, "sys")
-
- // get the system default country if auto region selected
- region = if (regionPref == "sys") {
- LocaleHelper
- .getDetectedCountry(requireContext(), "UK")
- .uppercase()
- } else {
- regionPref
- }
-
- fetchTrending()
- binding.homeRefresh.isEnabled = true
- binding.homeRefresh.setOnRefreshListener {
- fetchTrending()
- }
- }
-
- private fun fetchTrending() {
- lifecycleScope.launchWhenCreated {
- val response = try {
- RetrofitInstance.api.getTrending(region)
- } catch (e: IOException) {
- println(e)
- Log.e(TAG(), "IOException, you might not have internet connection")
- Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_SHORT).show()
- return@launchWhenCreated
- } catch (e: HttpException) {
- Log.e(TAG(), "HttpException, unexpected response")
- Toast.makeText(context, R.string.server_error, Toast.LENGTH_SHORT).show()
- return@launchWhenCreated
- } finally {
- binding.homeRefresh.isRefreshing = false
- }
- runOnUiThread {
- binding.progressBar.visibility = View.GONE
-
- // show a [SnackBar] if there are no trending videos available
- if (response.isEmpty()) {
- Snackbar.make(
- binding.root,
- R.string.change_region,
- Snackbar.LENGTH_LONG
- )
- .setAction(
- R.string.settings
- ) {
- startActivity(
- Intent(
- context,
- SettingsActivity::class.java
- )
- )
- }
- .show()
- return@runOnUiThread
- }
-
- binding.recview.adapter = VideosAdapter(
- response.toMutableList(),
- childFragmentManager
- )
-
- binding.recview.layoutManager = VideosAdapter.getLayout(requireContext())
- }
- }
- }
}
diff --git a/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt
new file mode 100644
index 000000000..2f429481e
--- /dev/null
+++ b/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt
@@ -0,0 +1,107 @@
+package com.github.libretube.ui.fragments
+
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Toast
+import androidx.lifecycle.lifecycleScope
+import com.github.libretube.R
+import com.github.libretube.api.RetrofitInstance
+import com.github.libretube.constants.PreferenceKeys
+import com.github.libretube.databinding.FragmentTrendsBinding
+import com.github.libretube.extensions.TAG
+import com.github.libretube.ui.activities.SettingsActivity
+import com.github.libretube.ui.adapters.VideosAdapter
+import com.github.libretube.ui.base.BaseFragment
+import com.github.libretube.util.LocaleHelper
+import com.github.libretube.util.PreferenceHelper
+import com.google.android.material.snackbar.Snackbar
+import retrofit2.HttpException
+import java.io.IOException
+
+class TrendsFragment : BaseFragment() {
+ private lateinit var binding: FragmentTrendsBinding
+ private lateinit var region: String
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ binding = FragmentTrendsBinding.inflate(layoutInflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ val regionPref = PreferenceHelper.getString(PreferenceKeys.REGION, "sys")
+
+ // get the system default country if auto region selected
+ region = if (regionPref == "sys") {
+ LocaleHelper
+ .getDetectedCountry(requireContext(), "UK")
+ .uppercase()
+ } else {
+ regionPref
+ }
+
+ fetchTrending()
+ binding.homeRefresh.isEnabled = true
+ binding.homeRefresh.setOnRefreshListener {
+ fetchTrending()
+ }
+ }
+
+ private fun fetchTrending() {
+ lifecycleScope.launchWhenCreated {
+ val response = try {
+ RetrofitInstance.api.getTrending(region)
+ } catch (e: IOException) {
+ println(e)
+ Log.e(TAG(), "IOException, you might not have internet connection")
+ Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_SHORT).show()
+ return@launchWhenCreated
+ } catch (e: HttpException) {
+ Log.e(TAG(), "HttpException, unexpected response")
+ Toast.makeText(context, R.string.server_error, Toast.LENGTH_SHORT).show()
+ return@launchWhenCreated
+ } finally {
+ binding.homeRefresh.isRefreshing = false
+ }
+ runOnUiThread {
+ binding.progressBar.visibility = View.GONE
+
+ // show a [SnackBar] if there are no trending videos available
+ if (response.isEmpty()) {
+ Snackbar.make(
+ binding.root,
+ R.string.change_region,
+ Snackbar.LENGTH_LONG
+ )
+ .setAction(
+ R.string.settings
+ ) {
+ startActivity(
+ Intent(
+ context,
+ SettingsActivity::class.java
+ )
+ )
+ }
+ .show()
+ return@runOnUiThread
+ }
+
+ binding.recview.adapter = VideosAdapter(
+ response.toMutableList(),
+ childFragmentManager
+ )
+
+ binding.recview.layoutManager = VideosAdapter.getLayout(requireContext())
+ }
+ }
+ }
+}
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 31af0267b..77d9ef65f 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -1,35 +1,6 @@
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_trends.xml b/app/src/main/res/layout/fragment_trends.xml
new file mode 100644
index 000000000..039e85007
--- /dev/null
+++ b/app/src/main/res/layout/fragment_trends.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/bottom_menu.xml b/app/src/main/res/menu/bottom_menu.xml
index e41131592..c24a7cc01 100644
--- a/app/src/main/res/menu/bottom_menu.xml
+++ b/app/src/main/res/menu/bottom_menu.xml
@@ -6,6 +6,12 @@
android:icon="@drawable/ic_home"
android:title="@string/startpage" />
+
+
-
-
\ No newline at end of file
diff --git a/app/src/main/res/navigation/nav.xml b/app/src/main/res/navigation/nav.xml
index 1b311537d..d076b0d5a 100644
--- a/app/src/main/res/navigation/nav.xml
+++ b/app/src/main/res/navigation/nav.xml
@@ -4,12 +4,16 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav"
app:startDestination="@id/homeFragment">
-
+
Auto
Limit to runtime
Open queue from notification
+ Trends
Download Service
diff --git a/app/src/main/res/xml/shortcuts.xml b/app/src/main/res/xml/shortcuts.xml
index 8df6da32b..d18406579 100644
--- a/app/src/main/res/xml/shortcuts.xml
+++ b/app/src/main/res/xml/shortcuts.xml
@@ -12,6 +12,16 @@
android:targetPackage="com.github.libretube"
android:targetClass="com.github.libretube.ui.activities.MainActivity" />
+
+
+