1 package host.exp.exponent.experience
2 
3 import android.widget.ArrayAdapter
4 import android.app.Activity
5 import android.view.LayoutInflater
6 import android.view.ViewGroup
7 import android.os.Bundle
8 import android.view.View
9 import androidx.fragment.app.Fragment
10 import host.exp.exponent.Constants
11 import host.exp.exponent.kernel.ExponentError
12 import host.exp.expoview.databinding.ErrorConsoleFragmentBinding
13 
14 class ErrorConsoleFragment : Fragment() {
15   private var _binding: ErrorConsoleFragmentBinding? = null
16   private val binding get() = _binding!!
17 
18   lateinit var adapter: ArrayAdapter<ExponentError>
19 
onClickHomenull20   private fun onClickHome() {
21     val activity: Activity? = activity
22     if (activity is ErrorActivity) {
23       activity.onClickHome()
24     }
25   }
26 
onClickReloadnull27   private fun onClickReload() {
28     val activity: Activity? = activity
29     if (activity is ErrorActivity) {
30       activity.onClickReload()
31     }
32   }
33 
onCreateViewnull34   override fun onCreateView(
35     inflater: LayoutInflater,
36     container: ViewGroup?,
37     savedInstanceState: Bundle?
38   ): View {
39     _binding = ErrorConsoleFragmentBinding.inflate(inflater, container, false)
40     binding.consoleHomeButton.setOnClickListener { onClickHome() }
41     binding.consoleReloadButton.setOnClickListener { onClickReload() }
42 
43     val bundle = arguments
44     val manifestUrl = bundle!!.getString(ErrorActivity.MANIFEST_URL_KEY)
45     val isHomeError = bundle.getBoolean(ErrorActivity.IS_HOME_KEY, false)
46     if (isHomeError || manifestUrl == null || manifestUrl == Constants.INITIAL_URL) {
47       // Cannot go home in any of these cases
48       binding.consoleHomeButton.visibility = View.GONE
49     }
50 
51     val errorQueue = ErrorActivity.errorList
52     synchronized(errorQueue) {
53       val adapter = ErrorQueueAdapter(requireContext(), errorQueue)
54       binding.listView.adapter = adapter
55       this.adapter = adapter
56     }
57 
58     return binding.root
59   }
60 
onDestroyViewnull61   override fun onDestroyView() {
62     super.onDestroyView()
63     _binding = null
64   }
65 }
66