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 @@ -42,6 +42,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager
import com.nextcloud.talk.components.ColoredStatusBar
import com.nextcloud.talk.components.StandardAppBar
import com.nextcloud.talk.data.network.NetworkMonitor
import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.BrandingUtils
import com.nextcloud.talk.utils.ClosedInterfaceImpl
Expand Down Expand Up @@ -70,6 +71,9 @@ class DiagnoseActivity : BaseActivity() {
@Inject
lateinit var userManager: UserManager

@Inject
lateinit var networkMonitor: NetworkMonitor

@Inject
lateinit var platformPermissionUtil: PlatformPermissionUtil

Expand Down Expand Up @@ -112,6 +116,7 @@ class DiagnoseActivity : BaseActivity() {
MaterialTheme(
colorScheme = colorScheme
) {
val isOnline = networkMonitor.isOnline.collectAsState().value
ColoredStatusBar()
Scaffold(
modifier = Modifier
Expand Down Expand Up @@ -144,7 +149,8 @@ class DiagnoseActivity : BaseActivity() {
viewState = viewState,
onTestPushClick = { diagnoseViewModel.fetchTestPushResult() },
onDismissDialog = { diagnoseViewModel.dismissDialog() },
isGooglePlayServicesAvailable = isGooglePlayServicesAvailable
isGooglePlayServicesAvailable = isGooglePlayServicesAvailable,
isOnline = isOnline
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ fun DiagnoseContentComposable(
viewState: NotificationUiState,
onTestPushClick: () -> Unit,
onDismissDialog: () -> Unit,
isGooglePlayServicesAvailable: Boolean
isGooglePlayServicesAvailable: Boolean,
isOnline: Boolean
) {
val context = LocalContext.current
Column(
Expand Down Expand Up @@ -101,7 +102,7 @@ fun DiagnoseContentComposable(
}
}
}
if (isGooglePlayServicesAvailable) {
if (isGooglePlayServicesAvailable && isOnline) {
ShowTestPushButton(onTestPushClick)
}
ShowNotificationData(isLoading, showDialog, context, viewState, onDismissDialog)
Expand Down Expand Up @@ -259,6 +260,7 @@ fun DiagnoseContentPreview() {
NotificationUiState.Success("Test notification successful"),
{},
{},
true,
true
)
}
71 changes: 50 additions & 21 deletions app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ import android.view.View
import android.view.WindowManager
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.drawable.toDrawable
Expand All @@ -56,6 +58,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.setAppTheme
import com.nextcloud.talk.conversationlist.ConversationsListActivity
import com.nextcloud.talk.conversationlist.ConversationsListActivity.Companion.NOTIFICATION_WARNING_DATE_NOT_SET
import com.nextcloud.talk.data.network.NetworkMonitor
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivitySettingsBinding
import com.nextcloud.talk.diagnose.DiagnoseActivity
Expand Down Expand Up @@ -113,6 +116,9 @@ class SettingsActivity :
@Inject
lateinit var ncApi: NcApi

@Inject
lateinit var networkMonitor: NetworkMonitor

@Inject
lateinit var ncApiCoroutines: NcApiCoroutines

Expand All @@ -136,11 +142,16 @@ class SettingsActivity :
private var profileQueryDisposable: Disposable? = null
private var dbQueryDisposable: Disposable? = null
private var openedByNotificationWarning: Boolean = false
private var isOnline: MutableState<Boolean> = mutableStateOf(false)

@SuppressLint("StringFormatInvalid")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
networkMonitor.isOnlineLiveData.observe(this) { online ->
isOnline.value = online
handleNetworkChange(isOnline.value)
}

binding = ActivitySettingsBinding.inflate(layoutInflater)
setupActionBar()
Expand All @@ -152,7 +163,7 @@ class SettingsActivity :
getCurrentUser()
handleIntent(intent)

setupLicenceSetting()
setupLicenceSetting(isOnline.value)

binding.settingsScreenLockSummary.text = String.format(
Locale.getDefault(),
Expand All @@ -161,15 +172,25 @@ class SettingsActivity :
)

setupDiagnose()
setupPrivacyUrl()
setupSourceCodeUrl()

setupPrivacyUrl(isOnline.value)
setupSourceCodeUrl(isOnline.value)

binding.settingsVersionSummary.text = String.format("v" + BuildConfig.VERSION_NAME)

setupPhoneBookIntegration()
setupPhoneBookIntegration(isOnline.value)

setupClientCertView()
}

private fun handleNetworkChange(isOnline: Boolean) {
setupLicenceSetting(isOnline)
setupPrivacyUrl(isOnline)
setupSourceCodeUrl(isOnline)
setupPhoneBookIntegration(isOnline)
setupCheckables(isOnline)
}

private fun handleIntent(intent: Intent) {
val extras: Bundle? = intent.extras
openedByNotificationWarning = extras?.getBoolean(KEY_SCROLL_TO_NOTIFICATION_CATEGORY) ?: false
Expand All @@ -180,7 +201,7 @@ class SettingsActivity :
supportActionBar?.show()
dispose(null)

loadCapabilitiesAndUpdateSettings()
loadCapabilitiesAndUpdateSettings(isOnline.value)

binding.settingsVersion.setOnClickListener {
sendLogs()
Expand All @@ -192,7 +213,7 @@ class SettingsActivity :
binding.settingsClientCertTitle.setText(R.string.nc_client_cert_setup)
}

setupCheckables()
setupCheckables(isOnline.value)
setupScreenLockSetting()
setupNotificationSettings()
setupProxyTypeSettings()
Expand Down Expand Up @@ -241,15 +262,15 @@ class SettingsActivity :
}
}

private fun loadCapabilitiesAndUpdateSettings() {
private fun loadCapabilitiesAndUpdateSettings(isOnline: Boolean) {
val capabilitiesWork = OneTimeWorkRequest.Builder(CapabilitiesWorker::class.java).build()
WorkManager.getInstance(context).enqueue(capabilitiesWork)

WorkManager.getInstance(context).getWorkInfoByIdLiveData(capabilitiesWork.id)
.observe(this) { workInfo ->
if (workInfo?.state == WorkInfo.State.SUCCEEDED) {
getCurrentUser()
setupCheckables()
setupCheckables(isOnline)
}
}
}
Expand All @@ -271,11 +292,12 @@ class SettingsActivity :
credentials = ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)
}

private fun setupPhoneBookIntegration() {
private fun setupPhoneBookIntegration(isOnline: Boolean) {
if (CapabilitiesUtil.hasSpreedFeatureCapability(
currentUser?.capabilities?.spreedCapability!!,
SpreedFeatures.PHONEBOOK_SEARCH
)
) &&
isOnline
) {
binding.settingsPhoneBookIntegration.visibility = View.VISIBLE
} else {
Expand Down Expand Up @@ -498,8 +520,9 @@ class SettingsActivity :
}
}

private fun setupSourceCodeUrl() {
if (!TextUtils.isEmpty(resources!!.getString(R.string.nc_source_code_url))) {
private fun setupSourceCodeUrl(isOnline: Boolean) {
if (!TextUtils.isEmpty(resources!!.getString(R.string.nc_source_code_url)) && isOnline) {
binding.settingsSourceCode.visibility = View.VISIBLE
binding.settingsSourceCode.setOnClickListener {
startActivity(
Intent(
Expand All @@ -520,8 +543,9 @@ class SettingsActivity :
}
}

private fun setupPrivacyUrl() {
if (!TextUtils.isEmpty(resources!!.getString(R.string.nc_privacy_url))) {
private fun setupPrivacyUrl(isOnline: Boolean) {
if (!TextUtils.isEmpty(resources!!.getString(R.string.nc_privacy_url)) && isOnline) {
binding.settingsPrivacy.visibility = View.VISIBLE
binding.settingsPrivacy.setOnClickListener {
startActivity(
Intent(
Expand All @@ -535,8 +559,9 @@ class SettingsActivity :
}
}

private fun setupLicenceSetting() {
if (!TextUtils.isEmpty(resources!!.getString(R.string.nc_gpl3_url))) {
private fun setupLicenceSetting(isOnline: Boolean) {
if (!TextUtils.isEmpty(resources!!.getString(R.string.nc_gpl3_url)) && isOnline) {
binding.settingsLicence.visibility = View.VISIBLE
binding.settingsLicence.setOnClickListener {
startActivity(
Intent(
Expand Down Expand Up @@ -928,7 +953,7 @@ class SettingsActivity :
}
}

private fun setupCheckables() {
private fun setupCheckables(isOnline: Boolean) {
binding.settingsShowNotificationWarningSwitch.isChecked =
appPreferences.showRegularNotificationWarning

Expand All @@ -945,13 +970,16 @@ class SettingsActivity :
binding.settingsShowNotificationWarning.visibility = View.GONE
}

if (CapabilitiesUtil.isReadStatusAvailable(currentUser?.capabilities?.spreedCapability)) {
if (CapabilitiesUtil.isReadStatusAvailable(currentUser?.capabilities?.spreedCapability) &&
isOnline
) {
binding.settingsReadPrivacy.visibility = View.VISIBLE
binding.settingsReadPrivacySwitch.isChecked = !CapabilitiesUtil.isReadStatusPrivate(currentUser!!)
} else {
binding.settingsReadPrivacy.visibility = View.GONE
}

setupTypingStatusSetting()
setupTypingStatusSetting(isOnline)
setupProxyUseSetting()

binding.settingsScreenLockSwitch.isChecked = appPreferences.isScreenLocked
Expand Down Expand Up @@ -1015,12 +1043,13 @@ class SettingsActivity :
}
}

private fun setupTypingStatusSetting() {
private fun setupTypingStatusSetting(isOnline: Boolean) {
if (currentUser!!.externalSignalingServer?.externalSignalingServer?.isNotEmpty() == true) {
binding.settingsTypingStatusOnlyWithHpb.visibility = View.GONE
Log.i(TAG, "Typing Status Available: ${CapabilitiesUtil.isTypingStatusAvailable(currentUser!!)}")

if (CapabilitiesUtil.isTypingStatusAvailable(currentUser!!)) {
if (CapabilitiesUtil.isTypingStatusAvailable(currentUser!!) && isOnline) {
binding.settingsTypingStatus.visibility = View.VISIBLE
binding.settingsTypingStatusSwitch.isChecked = !CapabilitiesUtil.isTypingStatusPrivate(currentUser!!)
} else {
binding.settingsTypingStatus.visibility = View.GONE
Expand Down
Loading