diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d5691f2f9..b1e8eebea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -90,21 +90,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt
index f634b5a1e..de9d87da6 100644
--- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt
+++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt
@@ -25,13 +25,11 @@ import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.aurora.Constants
import com.aurora.extensions.applyTheme
-import com.aurora.extensions.getEmptyActivityBundle
import com.aurora.gplayapi.data.models.App
import com.aurora.store.data.providers.NetworkProvider
import com.aurora.store.util.Preferences
import com.aurora.store.util.Preferences.PREFERENCE_THEME_ACCENT
import com.aurora.store.util.Preferences.PREFERENCE_THEME_TYPE
-import com.aurora.store.view.ui.account.GoogleActivity
import com.aurora.store.view.ui.details.*
import com.aurora.store.view.ui.sheets.NetworkDialogSheet
import com.aurora.store.view.ui.sheets.TOSSheet
@@ -72,24 +70,6 @@ abstract class BaseActivity : AppCompatActivity(), NetworkProvider.NetworkListen
startActivity(intent, options.toBundle())
}
- fun openStreamBrowseActivity(browseUrl: String, title: String = "") {
- val intent = if (browseUrl.lowercase().contains("expanded")) {
- Intent(this, ExpandedStreamBrowseFragment::class.java)
- } else if (browseUrl.lowercase().contains("developer")) {
- Intent(this, DevProfileActivity::class.java)
- } else {
- Intent(this, StreamBrowseActivity::class.java)
- }
- intent.putExtra(Constants.BROWSE_EXTRA, browseUrl)
- intent.putExtra(Constants.STRING_EXTRA, title)
- startActivity(intent, getEmptyActivityBundle())
- }
-
- fun openGoogleActivity() {
- val intent = Intent(this, GoogleActivity::class.java)
- startActivity(intent, getEmptyActivityBundle())
- }
-
fun askToReadTOS() {
runOnUiThread {
if (!supportFragmentManager.isDestroyed) {
diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt
index 5e0486675..19e0bad7e 100644
--- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt
+++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt
@@ -19,7 +19,6 @@
package com.aurora.store.view.ui.commons
-import android.app.ActivityOptions
import android.content.Intent
import androidx.annotation.LayoutRes
import androidx.fragment.app.Fragment
@@ -29,8 +28,7 @@ import com.aurora.extensions.getEmptyActivityBundle
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Category
import com.aurora.store.MobileNavigationDirections
-import com.aurora.store.view.ui.details.DevProfileActivity
-import com.aurora.store.view.ui.details.ScreenshotFragment
+import com.aurora.store.view.ui.details.DevProfileFragment
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import java.lang.reflect.Modifier
@@ -68,12 +66,15 @@ open class BaseFragment : Fragment {
browseUrl
)
)
+ } else if (browseUrl.lowercase().contains("developer")) {
+ findNavController().navigate(
+ MobileNavigationDirections.actionGlobalDevProfileFragment(
+ browseUrl.substringAfter("developer-"),
+ title
+ )
+ )
} else {
- val intent = if (browseUrl.lowercase().contains("developer"))
- Intent(requireContext(), DevProfileActivity::class.java)
- else
- Intent(requireContext(), StreamBrowseActivity::class.java)
-
+ val intent = Intent(requireContext(), StreamBrowseActivity::class.java)
intent.putExtra(Constants.BROWSE_EXTRA, browseUrl)
intent.putExtra(Constants.STRING_EXTRA, title)
startActivity(intent, requireContext().getEmptyActivityBundle())
diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DevProfileActivity.kt b/app/src/main/java/com/aurora/store/view/ui/details/DevProfileActivity.kt
deleted file mode 100644
index ae3cddc00..000000000
--- a/app/src/main/java/com/aurora/store/view/ui/details/DevProfileActivity.kt
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Aurora Store
- * Copyright (C) 2021, Rahul Kumar Patel
- *
- * Aurora Store is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * Aurora Store is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Aurora Store. If not, see .
- *
- */
-
-package com.aurora.store.view.ui.details
-
-import android.content.Intent
-import android.os.Bundle
-import androidx.lifecycle.ViewModelProvider
-import com.aurora.Constants
-import com.aurora.gplayapi.data.models.App
-import com.aurora.gplayapi.data.models.AuthData
-import com.aurora.gplayapi.data.models.StreamCluster
-import com.aurora.gplayapi.data.models.details.DevStream
-import com.aurora.store.R
-import com.aurora.store.data.ViewState
-import com.aurora.store.data.providers.AuthProvider
-import com.aurora.store.databinding.ActivityDevProfileBinding
-import com.aurora.extensions.load
-import com.aurora.store.view.epoxy.controller.DeveloperCarouselController
-import com.aurora.store.view.epoxy.controller.GenericCarouselController
-import com.aurora.store.view.ui.commons.BaseActivity
-import com.aurora.store.viewmodel.details.DevProfileViewModel
-
-class DevProfileActivity : BaseActivity(), GenericCarouselController.Callbacks {
-
- private lateinit var B: ActivityDevProfileBinding
- private lateinit var VM: DevProfileViewModel
- private lateinit var C: DeveloperCarouselController
- private lateinit var authData: AuthData
-
- override fun onConnected() {
- hideNetworkConnectivitySheet()
- }
-
- override fun onDisconnected() {
- showNetworkConnectivitySheet()
- }
-
- override fun onReconnected() {
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- B = ActivityDevProfileBinding.inflate(layoutInflater)
- C = DeveloperCarouselController(this)
- VM = ViewModelProvider(this)[DevProfileViewModel::class.java]
-
- authData = AuthProvider.with(this).getAuthData()
-
- setContentView(B.root)
-
- attachToolbar()
- attachRecycler()
-
- VM.liveData.observe(this) {
- when (it) {
- is ViewState.Empty -> {
- }
- is ViewState.Loading -> {
-
- }
- is ViewState.Error -> {
-
- }
- is ViewState.Status -> {
-
- }
- is ViewState.Success<*> -> {
- updateInfo(it.data as DevStream)
- updateController(it.data)
- }
- }
- }
-
- B.viewFlipper.displayedChild = 1
-
- onNewIntent(intent)
- }
-
- override fun onNewIntent(intent: Intent?) {
- super.onNewIntent(intent)
- if (intent != null) {
- if (intent.scheme != null && (intent.scheme == "http" || intent.scheme == "https")) {
- val devId = intent.data!!.getQueryParameter("id")
- if (devId.isNullOrEmpty()) {
- finishAfterTransition()
- } else {
- VM.getStreamBundle(devId)
- }
- } else {
- intent.getStringExtra(Constants.BROWSE_EXTRA)?.let {
- VM.getStreamBundle(it.substringAfter("developer-"))
- }
- intent.getStringExtra(Constants.STRING_EXTRA)?.let {
- B.layoutToolbarAction.txtTitle.text = it
- }
- }
- } else {
- finishAfterTransition()
- }
- }
-
- private fun attachToolbar() {
- B.layoutToolbarAction.toolbar.setOnClickListener {
- finishAfterTransition()
- }
- B.layoutToolbarAction.txtTitle.text = getString(R.string.details_dev_profile)
- }
-
- private fun attachRecycler() {
- B.recycler.setController(C)
- }
-
- private fun updateInfo(devStream: DevStream) {
- B.layoutToolbarAction.txtTitle.text = devStream.title
- B.txtDevName.text = devStream.title
- B.txtDevDescription.text = devStream.description
- B.imgIcon.load(devStream.imgUrl)
- B.viewFlipper.displayedChild = 0
- }
-
- private fun updateController(devStream: DevStream) {
- C.setData(devStream.streamBundle)
- }
-
- override fun onHeaderClicked(streamCluster: StreamCluster) {
- openStreamBrowseActivity(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle)
- }
-
- override fun onClusterScrolled(streamCluster: StreamCluster) {
- VM.observeCluster(streamCluster)
- }
-
- override fun onAppClick(app: App) {
- openDetailsActivity(app)
- }
-
- override fun onAppLongClick(app: App) {
-
- }
-}
diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt
new file mode 100644
index 000000000..2c6b3aaab
--- /dev/null
+++ b/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt
@@ -0,0 +1,126 @@
+/*
+ * Aurora Store
+ * Copyright (C) 2021, Rahul Kumar Patel
+ *
+ * Aurora Store is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Aurora Store is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Aurora Store. If not, see .
+ *
+ */
+
+package com.aurora.store.view.ui.details
+
+import android.os.Bundle
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.navigation.fragment.findNavController
+import androidx.navigation.fragment.navArgs
+import com.aurora.extensions.load
+import com.aurora.gplayapi.data.models.App
+import com.aurora.gplayapi.data.models.AuthData
+import com.aurora.gplayapi.data.models.StreamCluster
+import com.aurora.gplayapi.data.models.details.DevStream
+import com.aurora.store.R
+import com.aurora.store.data.ViewState
+import com.aurora.store.data.providers.AuthProvider
+import com.aurora.store.databinding.FragmentDevProfileBinding
+import com.aurora.store.view.epoxy.controller.DeveloperCarouselController
+import com.aurora.store.view.epoxy.controller.GenericCarouselController
+import com.aurora.store.view.ui.commons.BaseFragment
+import com.aurora.store.viewmodel.details.DevProfileViewModel
+
+class DevProfileFragment : BaseFragment(R.layout.fragment_dev_profile),
+ GenericCarouselController.Callbacks {
+
+ private var _binding: FragmentDevProfileBinding? = null
+ private val binding: FragmentDevProfileBinding
+ get() = _binding!!
+
+ private val args: DevProfileFragmentArgs by navArgs()
+
+ private lateinit var VM: DevProfileViewModel
+ private lateinit var C: DeveloperCarouselController
+ private lateinit var authData: AuthData
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ _binding = FragmentDevProfileBinding.bind(view)
+
+ C = DeveloperCarouselController(this)
+ VM = ViewModelProvider(this)[DevProfileViewModel::class.java]
+ authData = AuthProvider.with(requireContext()).getAuthData()
+
+ // Toolbar
+ binding.layoutToolbarAction.apply {
+ txtTitle.text =
+ if (args.title.isNullOrBlank()) getString(R.string.details_dev_profile) else args.title
+ toolbar.setOnClickListener { findNavController().navigateUp() }
+ }
+
+ // RecyclerView
+ binding.recycler.setController(C)
+
+ VM.liveData.observe(viewLifecycleOwner) {
+ when (it) {
+ is ViewState.Empty -> {
+ }
+
+ is ViewState.Loading -> {
+
+ }
+
+ is ViewState.Error -> {
+
+ }
+
+ is ViewState.Status -> {
+
+ }
+
+ is ViewState.Success<*> -> {
+ (it.data as DevStream).apply {
+ binding.layoutToolbarAction.txtTitle.text = title
+ binding.txtDevName.text = title
+ binding.txtDevDescription.text = description
+ binding.imgIcon.load(imgUrl)
+ binding.viewFlipper.displayedChild = 0
+ C.setData(streamBundle)
+ }
+ }
+ }
+ }
+
+ binding.viewFlipper.displayedChild = 1
+ VM.getStreamBundle(args.devId)
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+
+ override fun onHeaderClicked(streamCluster: StreamCluster) {
+ openStreamBrowseActivity(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle)
+ }
+
+ override fun onClusterScrolled(streamCluster: StreamCluster) {
+ VM.observeCluster(streamCluster)
+ }
+
+ override fun onAppClick(app: App) {
+ openDetailsActivity(app)
+ }
+
+ override fun onAppLongClick(app: App) {
+
+ }
+}
diff --git a/app/src/main/res/layout/activity_dev_profile.xml b/app/src/main/res/layout/fragment_dev_profile.xml
similarity index 97%
rename from app/src/main/res/layout/activity_dev_profile.xml
rename to app/src/main/res/layout/fragment_dev_profile.xml
index c45c42d48..7b45f0991 100644
--- a/app/src/main/res/layout/activity_dev_profile.xml
+++ b/app/src/main/res/layout/fragment_dev_profile.xml
@@ -24,7 +24,8 @@
android:layout_height="match_parent"
android:divider="@drawable/divider"
android:orientation="vertical"
- android:showDividers="middle">
+ android:showDividers="middle"
+ tools:context=".view.ui.details.DevProfileFragment">
+
+
+
+
+
@@ -166,4 +183,7 @@
+