Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,38 +9,35 @@ 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<GuideViewModel>() {
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
webChromeClient = WebChromeClient()
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) {
Expand All @@ -49,26 +46,24 @@ class GuideFragment : ViewModelFragment<GuideViewModel>() {
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()

}
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -20,9 +22,11 @@ class GuideViewModel : BaseViewModel() {
"UTF-8"
)
}

private val urlLiveData = MutableLiveData<String>(
"https://docs.google.com/gview?embedded=true&url=$guideUrl"
)

fun url(): LiveData<String> = urlLiveData

}
Original file line number Diff line number Diff line change
Expand Up @@ -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

/**
Expand All @@ -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)
}

Expand Down
11 changes: 10 additions & 1 deletion app/src/main/res/navigation/mobile_navigation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,21 @@
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" >
<action
android:id="@+id/openProgressDialog"
app:destination="@id/progressDialog" />
</fragment>

<fragment
android:id="@+id/nav_about"
android:name="ro.code4.monitorizarevot.ui.settings.AboutFragment"
android:label="@string/menu_settings"
tools:layout="@layout/fragment_about" />

<dialog
android:id="@+id/progressDialog"
android:name="ro.code4.monitorizarevot.widget.ProgressDialogFragment"
tools:layout="@layout/fragment_progress_dialog"/>

</navigation>