diff --git a/app/src/main/java/ro/code4/monitorizarevot/ui/guide/GuideFragment.kt b/app/src/main/java/ro/code4/monitorizarevot/ui/guide/GuideFragment.kt index 15ed2421..8de23e0a 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/ui/guide/GuideFragment.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/ui/guide/GuideFragment.kt @@ -9,28 +9,27 @@ import android.webkit.WebResourceRequest import android.webkit.WebView import android.webkit.WebViewClient import androidx.lifecycle.Observer +import androidx.navigation.fragment.findNavController import kotlinx.android.synthetic.main.fragment_guide.* import org.koin.android.ext.android.inject import ro.code4.monitorizarevot.R import ro.code4.monitorizarevot.ui.base.ViewModelFragment -import ro.code4.monitorizarevot.widget.ProgressDialogFragment + class GuideFragment : ViewModelFragment() { - override val layout: Int - get() = R.layout.fragment_guide - override val screenName: Int - get() = R.string.analytics_title_guide - private val progressDialog: ProgressDialogFragment by lazy { - ProgressDialogFragment().also { - it.isCancelable = false - } - } + + override val layout: Int = R.layout.fragment_guide + override val screenName: Int = R.string.analytics_title_guide + override val viewModel: GuideViewModel by inject() - @SuppressLint("SetJavaScriptEnabled") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + loadWebView() + } + @SuppressLint("SetJavaScriptEnabled") + private fun loadWebView() { webView.apply { settings.setSupportZoom(true) settings.javaScriptEnabled = true @@ -38,9 +37,7 @@ class GuideFragment : ViewModelFragment() { webViewClient = object : WebViewClient() { override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) { super.onPageStarted(view, url, favicon) - if (!progressDialog.isResumed) { - progressDialog.showNow(childFragmentManager, ProgressDialogFragment.TAG) - } + openProgressDialog() } override fun onPageFinished(view: WebView, url: String) { @@ -49,26 +46,24 @@ class GuideFragment : ViewModelFragment() { view.reload() return } - progressDialog.dismiss() + closeProgressDialog() } override fun shouldOverrideUrlLoading( view: WebView, request: WebResourceRequest ): Boolean { - return request.url?.let { !it.path.equals(viewModel.url().value) } ?: true + return request.url.path.equals(viewModel.url().value).not() } } } + viewModel.url().observe(viewLifecycleOwner, Observer { webView.loadUrl(it) }) } - override fun onDestroyView() { - if (progressDialog.isResumed) { - progressDialog.dismissAllowingStateLoss() - } - super.onDestroyView() - } + private fun openProgressDialog() = findNavController().navigate(R.id.openProgressDialog) + private fun closeProgressDialog() = findNavController().popBackStack() + } \ No newline at end of file diff --git a/app/src/main/java/ro/code4/monitorizarevot/ui/guide/GuideViewModel.kt b/app/src/main/java/ro/code4/monitorizarevot/ui/guide/GuideViewModel.kt index 5fd472cf..188dfe1b 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/ui/guide/GuideViewModel.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/ui/guide/GuideViewModel.kt @@ -10,7 +10,9 @@ import ro.code4.monitorizarevot.ui.base.BaseViewModel import java.net.URLEncoder class GuideViewModel : BaseViewModel() { + private val remoteConfig = runCatching { FirebaseRemoteConfig.getInstance() }.getOrNull() + private val guideUrl by lazy { URLEncoder.encode( remoteConfig.getStringOrDefault( @@ -20,9 +22,11 @@ class GuideViewModel : BaseViewModel() { "UTF-8" ) } + private val urlLiveData = MutableLiveData( "https://docs.google.com/gview?embedded=true&url=$guideUrl" ) fun url(): LiveData = urlLiveData + } \ No newline at end of file diff --git a/app/src/main/java/ro/code4/monitorizarevot/widget/ProgressDialogFragment.kt b/app/src/main/java/ro/code4/monitorizarevot/widget/ProgressDialogFragment.kt index ec8d63ca..ebb3d781 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/widget/ProgressDialogFragment.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/widget/ProgressDialogFragment.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.DialogFragment -import androidx.fragment.app.FragmentManager import ro.code4.monitorizarevot.R /** @@ -17,6 +16,7 @@ class ProgressDialogFragment : DialogFragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { + isCancelable = false return inflater.inflate(R.layout.fragment_progress_dialog, container, false) } diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 9b1a20a9..0dc25b93 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -16,7 +16,11 @@ android:id="@+id/nav_guide" android:name="ro.code4.monitorizarevot.ui.guide.GuideFragment" android:label="@string/menu_guide" - tools:layout="@layout/fragment_guide" /> + tools:layout="@layout/fragment_guide" > + + + + \ No newline at end of file