blob: c744b9cfce32e250ee43fd086e52d53627913603 [file] [log] [blame]
/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
*/
/**
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.android.healthconnect.controller.permissions.shared
import android.content.Intent
import android.os.Bundle
import androidx.navigation.fragment.findNavController
import androidx.preference.Preference
import com.android.healthconnect.controller.R
import com.android.healthconnect.controller.shared.preference.HealthPreference
import com.android.healthconnect.controller.shared.preference.HealthPreferenceFragment
import com.android.healthconnect.controller.utils.DeviceInfoUtils
import com.android.healthconnect.controller.utils.logging.AppPermissionsElement
import com.android.healthconnect.controller.utils.logging.PageName
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
/** Can't see all your apps fragment for Health Connect. */
@AndroidEntryPoint(HealthPreferenceFragment::class)
class HelpAndFeedbackFragment : Hilt_HelpAndFeedbackFragment() {
companion object {
const val CHECK_FOR_UPDATES = "check_for_updates"
private const val SEE_ALL_COMPATIBLE_APPS = "see_all_compatible_apps"
private const val SEND_FEEDBACK = "send_feedback"
const val APP_INTEGRATION_REQUEST_BUCKET_ID =
"com.google.android.healthconnect.controller.APP_INTEGRATION_REQUEST"
const val USER_INITIATED_FEEDBACK_BUCKET_ID =
"com.google.android.healthconnect.controller.USER_INITIATED_FEEDBACK_REPORT"
const val FEEDBACK_INTENT_RESULT_CODE = 0
}
init {
this.setPageName(PageName.HELP_AND_FEEDBACK_PAGE)
}
@Inject lateinit var deviceInfoUtils: DeviceInfoUtils
private val mCheckForUpdates: HealthPreference? by lazy {
preferenceScreen.findPreference(CHECK_FOR_UPDATES)
}
private val mSeeAllCompatibleApps: HealthPreference? by lazy {
preferenceScreen.findPreference(SEE_ALL_COMPATIBLE_APPS)
}
private val mSendFeedback: Preference? by lazy {
preferenceScreen.findPreference(SEND_FEEDBACK)
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
super.onCreatePreferences(savedInstanceState, rootKey)
setPreferencesFromResource(R.xml.help_and_feedback_screen, rootKey)
mCheckForUpdates?.logName = AppPermissionsElement.CHECK_FOR_UPDATES_BUTTON
mCheckForUpdates?.setOnPreferenceClickListener {
findNavController().navigate(R.id.action_cant_see_all_apps_to_updated_apps)
true
}
mSeeAllCompatibleApps?.logName = AppPermissionsElement.SEE_ALL_COMPATIBLE_APPS_BUTTON
mSeeAllCompatibleApps?.setOnPreferenceClickListener {
findNavController().navigate(R.id.action_cant_see_all_apps_to_play_store)
true
}
mSendFeedback?.setOnPreferenceClickListener {
val intent = Intent(Intent.ACTION_BUG_REPORT)
intent.putExtra("category_tag", APP_INTEGRATION_REQUEST_BUCKET_ID)
activity?.startActivityForResult(intent, FEEDBACK_INTENT_RESULT_CODE)
true
}
mSendFeedback?.isVisible = deviceInfoUtils.isSendFeedbackAvailable(requireContext())
mCheckForUpdates?.isVisible = deviceInfoUtils.isPlayStoreAvailable(requireContext())
mSeeAllCompatibleApps?.isVisible = deviceInfoUtils.isPlayStoreAvailable(requireContext())
}
}