mirror of
https://github.com/whyorean/AuroraStore.git
synced 2026-06-16 11:42:16 -04:00
Migrate DetailsExodusActivity to fragment
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
plugins {
|
||||
id 'com.android.application'
|
||||
id 'org.jetbrains.kotlin.android'
|
||||
id 'org.jetbrains.kotlin.plugin.parcelize'
|
||||
id 'org.jetbrains.kotlin.kapt'
|
||||
id 'androidx.navigation.safeargs.kotlin'
|
||||
id 'org.jlleitschuh.gradle.ktlint'
|
||||
|
||||
@@ -95,7 +95,6 @@
|
||||
</activity>
|
||||
|
||||
<activity android:name=".view.ui.account.GoogleActivity" />
|
||||
<activity android:name=".view.ui.details.DetailsExodusActivity" />
|
||||
|
||||
<service android:name=".data.service.NotificationService" />
|
||||
<service android:name=".data.installer.InstallerService" />
|
||||
|
||||
@@ -19,25 +19,29 @@
|
||||
|
||||
package com.aurora.store.data.model
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.text.DateFormat
|
||||
import java.text.ParseException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
class ExodusReport {
|
||||
val creator: String = String()
|
||||
val name: String = String()
|
||||
data class ExodusReport(
|
||||
val creator: String = String(),
|
||||
val name: String = String(),
|
||||
val reports: List<Report> = listOf()
|
||||
}
|
||||
)
|
||||
|
||||
class Report {
|
||||
val id: Int = 0
|
||||
val downloads: String = String()
|
||||
val version: String = String()
|
||||
val creationDate: String = String()
|
||||
val updatedAt: String = String()
|
||||
val versionCode: String = String()
|
||||
@Parcelize
|
||||
data class Report(
|
||||
val id: Int = 0,
|
||||
val downloads: String = String(),
|
||||
val version: String = String(),
|
||||
val creationDate: String = String(),
|
||||
val updatedAt: String = String(),
|
||||
val versionCode: String = String(),
|
||||
val trackers: List<Int> = listOf()
|
||||
) : Parcelable {
|
||||
|
||||
fun getFormattedCreationDate(): String {
|
||||
return try {
|
||||
@@ -52,16 +56,17 @@ class Report {
|
||||
}
|
||||
}
|
||||
|
||||
class ExodusTracker {
|
||||
var id: Int = 0
|
||||
var name: String = String()
|
||||
var url: String = String()
|
||||
var signature: String = String()
|
||||
var date: String = String()
|
||||
var description: String = String()
|
||||
var networkSignature: String = String()
|
||||
var documentation: List<String> = emptyList()
|
||||
data class ExodusTracker(
|
||||
var id: Int = 0,
|
||||
var name: String = String(),
|
||||
var url: String = String(),
|
||||
var signature: String = String(),
|
||||
var date: String = String(),
|
||||
var description: String = String(),
|
||||
var networkSignature: String = String(),
|
||||
var documentation: List<String> = emptyList(),
|
||||
var categories: List<String> = emptyList()
|
||||
) {
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return id
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
/*
|
||||
* Aurora Store
|
||||
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.aurora.store.util
|
||||
|
||||
import android.app.ActivityOptions
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.aurora.Constants
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.store.data.model.Report
|
||||
import com.aurora.store.view.ui.details.DetailsExodusActivity
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.GsonBuilder
|
||||
import java.lang.reflect.Modifier
|
||||
|
||||
object NavigationUtil {
|
||||
val gson: Gson = GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create()
|
||||
|
||||
fun openExodusActivity(context: Context, app: App, report: Report) {
|
||||
val intent = Intent(
|
||||
context,
|
||||
DetailsExodusActivity::class.java
|
||||
).apply {
|
||||
putExtra(Constants.STRING_APP, gson.toJson(app))
|
||||
putExtra(Constants.STRING_EXTRA, gson.toJson(report))
|
||||
}
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity)
|
||||
context.startActivity(intent, options.toBundle())
|
||||
}
|
||||
}
|
||||
@@ -62,7 +62,6 @@ import com.aurora.gplayapi.data.models.StreamBundle
|
||||
import com.aurora.gplayapi.data.models.StreamCluster
|
||||
import com.aurora.gplayapi.helpers.AppDetailsHelper
|
||||
import com.aurora.gplayapi.helpers.ReviewsHelper
|
||||
import com.aurora.store.MainActivity
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.State
|
||||
import com.aurora.store.data.ViewState
|
||||
@@ -86,7 +85,6 @@ import com.aurora.store.databinding.LayoutDetailsPrivacyBinding
|
||||
import com.aurora.store.databinding.LayoutDetailsReviewBinding
|
||||
import com.aurora.store.util.CommonUtil
|
||||
import com.aurora.store.util.Log
|
||||
import com.aurora.store.util.NavigationUtil
|
||||
import com.aurora.store.util.PackageUtil
|
||||
import com.aurora.store.util.PathUtil
|
||||
import com.aurora.store.util.Preferences
|
||||
@@ -1036,7 +1034,10 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
|
||||
}
|
||||
|
||||
B.headerPrivacy.addClickListener {
|
||||
NavigationUtil.openExodusActivity(requireContext(), app, report)
|
||||
findNavController().navigate(
|
||||
AppDetailsFragmentDirections
|
||||
.actionAppDetailsFragmentToDetailsExodusFragment(report)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
B.txtStatus.apply {
|
||||
|
||||
@@ -20,76 +20,57 @@
|
||||
package com.aurora.store.view.ui.details
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import com.aurora.Constants
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.extensions.browse
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.model.ExodusTracker
|
||||
import com.aurora.store.data.model.Report
|
||||
import com.aurora.store.data.providers.ExodusDataProvider
|
||||
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
||||
import com.aurora.extensions.browse
|
||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||
import com.aurora.store.view.epoxy.views.details.ExodusViewModel_
|
||||
import com.aurora.store.view.ui.commons.BaseActivity
|
||||
import org.json.JSONObject
|
||||
|
||||
class DetailsExodusActivity : BaseActivity() {
|
||||
class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
|
||||
|
||||
private lateinit var B: ActivityGenericRecyclerBinding
|
||||
private lateinit var app: App
|
||||
private lateinit var report: Report
|
||||
private var _binding: ActivityGenericRecyclerBinding? = null
|
||||
private val binding: ActivityGenericRecyclerBinding
|
||||
get() = _binding!!
|
||||
|
||||
override fun onConnected() {
|
||||
private val args: DetailsExodusFragmentArgs by navArgs()
|
||||
|
||||
}
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
_binding = ActivityGenericRecyclerBinding.bind(view)
|
||||
|
||||
override fun onDisconnected() {
|
||||
|
||||
}
|
||||
|
||||
override fun onReconnected() {
|
||||
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
B = ActivityGenericRecyclerBinding.inflate(layoutInflater)
|
||||
|
||||
setContentView(B.root)
|
||||
|
||||
val rawApp: String? = intent.getStringExtra(Constants.STRING_APP)
|
||||
val rawExodusTrackers: String? = intent.getStringExtra(Constants.STRING_EXTRA)
|
||||
|
||||
if (rawApp != null) {
|
||||
app = gson.fromJson(rawApp, App::class.java)
|
||||
report = gson.fromJson(
|
||||
rawExodusTrackers,
|
||||
Report::class.java
|
||||
)
|
||||
app.let {
|
||||
attachToolbar()
|
||||
report.let {
|
||||
updateController(getExodusTrackersFromReport(report))
|
||||
}
|
||||
// Toolbar
|
||||
binding.layoutToolbarAction.apply {
|
||||
txtTitle.text = ""
|
||||
toolbar.setOnClickListener {
|
||||
findNavController().navigateUp()
|
||||
}
|
||||
}
|
||||
|
||||
updateController(getExodusTrackersFromReport(args.report))
|
||||
}
|
||||
|
||||
private fun attachToolbar() {
|
||||
B.layoutToolbarAction.toolbar.setOnClickListener {
|
||||
finishAfterTransition()
|
||||
}
|
||||
B.layoutToolbarAction.txtTitle.text = app.displayName
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
private fun updateController(reviews: List<ExodusTracker>) {
|
||||
B.recycler.withModels {
|
||||
binding.recycler.withModels {
|
||||
add(
|
||||
HeaderViewModel_()
|
||||
.id("header")
|
||||
.title(getString(R.string.exodus_view_report))
|
||||
.browseUrl("browse")
|
||||
.click { _ -> browse(Constants.EXODUS_REPORT_URL + report.id) }
|
||||
.click { _ -> context?.browse(Constants.EXODUS_REPORT_URL + args.report.id) }
|
||||
)
|
||||
reviews.forEach {
|
||||
add(
|
||||
@@ -97,7 +78,7 @@ class DetailsExodusActivity : BaseActivity() {
|
||||
.id(it.id)
|
||||
.tracker(it)
|
||||
.click { _ ->
|
||||
browse(it.url)
|
||||
context?.browse(it.url)
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -124,7 +105,7 @@ class DetailsExodusActivity : BaseActivity() {
|
||||
private fun fetchLocalTrackers(trackerIds: List<Int>): List<JSONObject> {
|
||||
return try {
|
||||
ExodusDataProvider
|
||||
.with(this)
|
||||
.with(requireContext())
|
||||
.getFilteredTrackers(trackerIds)
|
||||
} catch (e: Exception) {
|
||||
emptyList()
|
||||
@@ -117,6 +117,9 @@
|
||||
<action
|
||||
android:id="@+id/action_appDetailsFragment_to_detailsReviewFragment"
|
||||
app:destination="@id/detailsReviewFragment" />
|
||||
<action
|
||||
android:id="@+id/action_appDetailsFragment_to_detailsExodusFragment"
|
||||
app:destination="@id/detailsExodusFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/categoryBrowseFragment"
|
||||
@@ -199,7 +202,6 @@
|
||||
<fragment
|
||||
android:id="@+id/detailsMoreFragment"
|
||||
android:name="com.aurora.store.view.ui.details.DetailsMoreFragment"
|
||||
android:label="fragment_details_more"
|
||||
tools:layout="@layout/fragment_details_more" >
|
||||
<argument
|
||||
android:name="app"
|
||||
@@ -215,6 +217,14 @@
|
||||
<argument android:name="packageName"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/detailsExodusFragment"
|
||||
android:name="com.aurora.store.view.ui.details.DetailsExodusFragment"
|
||||
tools:layout="@layout/activity_generic_recycler" >
|
||||
<argument
|
||||
android:name="report"
|
||||
app:argType="com.aurora.store.data.model.Report" />
|
||||
</fragment>
|
||||
<action
|
||||
android:id="@+id/action_global_appDetailsFragment"
|
||||
app:destination="@id/appDetailsFragment" />
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
plugins {
|
||||
id 'com.android.application' version '8.0.2' apply false
|
||||
id 'org.jetbrains.kotlin.android' version '1.8.21' apply false
|
||||
id 'org.jetbrains.kotlin.plugin.parcelize' version '1.8.21' apply false
|
||||
id 'androidx.navigation.safeargs.kotlin' version '2.6.0' apply false
|
||||
id 'org.jlleitschuh.gradle.ktlint' version '11.4.0' apply false
|
||||
id 'com.starter.easylauncher' version '6.2.0' apply false
|
||||
|
||||
Reference in New Issue
Block a user