@@ -32,6 +32,8 @@ import android.view.View
3232import android.view.WindowManager
3333import android.widget.Toast
3434import androidx.appcompat.app.AlertDialog
35+ import androidx.compose.runtime.MutableState
36+ import androidx.compose.runtime.mutableStateOf
3537import androidx.core.content.ContextCompat
3638import androidx.core.content.res.ResourcesCompat
3739import androidx.core.graphics.drawable.toDrawable
@@ -56,6 +58,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
5658import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.setAppTheme
5759import com.nextcloud.talk.conversationlist.ConversationsListActivity
5860import com.nextcloud.talk.conversationlist.ConversationsListActivity.Companion.NOTIFICATION_WARNING_DATE_NOT_SET
61+ import com.nextcloud.talk.data.network.NetworkMonitor
5962import com.nextcloud.talk.data.user.model.User
6063import com.nextcloud.talk.databinding.ActivitySettingsBinding
6164import com.nextcloud.talk.diagnose.DiagnoseActivity
@@ -113,6 +116,9 @@ class SettingsActivity :
113116 @Inject
114117 lateinit var ncApi: NcApi
115118
119+ @Inject
120+ lateinit var networkMonitor: NetworkMonitor
121+
116122 @Inject
117123 lateinit var ncApiCoroutines: NcApiCoroutines
118124
@@ -136,11 +142,15 @@ class SettingsActivity :
136142 private var profileQueryDisposable: Disposable ? = null
137143 private var dbQueryDisposable: Disposable ? = null
138144 private var openedByNotificationWarning: Boolean = false
145+ private var isOnline: MutableState <Boolean > = mutableStateOf(false )
139146
140147 @SuppressLint(" StringFormatInvalid" )
141148 override fun onCreate (savedInstanceState : Bundle ? ) {
142149 super .onCreate(savedInstanceState)
143150 NextcloudTalkApplication .sharedApplication!! .componentApplication.inject(this )
151+ networkMonitor.isOnlineLiveData.observe(this ){ online ->
152+ isOnline.value = online
153+ }
144154
145155 binding = ActivitySettingsBinding .inflate(layoutInflater)
146156 setupActionBar()
@@ -151,21 +161,24 @@ class SettingsActivity :
151161
152162 getCurrentUser()
153163 handleIntent(intent)
154-
155- setupLicenceSetting()
156-
164+ networkMonitor.isOnlineLiveData.observe( this ){ isOnline ->
165+ setupLicenceSetting(isOnline )
166+ }
157167 binding.settingsScreenLockSummary.text = String .format(
158168 Locale .getDefault(),
159169 resources!! .getString(R .string.nc_settings_screen_lock_desc),
160170 resources!! .getString(R .string.nc_app_product_name)
161171 )
162172
163173 setupDiagnose()
164- setupPrivacyUrl()
165- setupSourceCodeUrl()
174+
175+ setupPrivacyUrl(isOnline.value)
176+ setupSourceCodeUrl(isOnline.value)
177+
178+
166179 binding.settingsVersionSummary.text = String .format(" v" + BuildConfig .VERSION_NAME )
167180
168- setupPhoneBookIntegration()
181+ setupPhoneBookIntegration(isOnline.value )
169182
170183 setupClientCertView()
171184 }
@@ -180,7 +193,7 @@ class SettingsActivity :
180193 supportActionBar?.show()
181194 dispose(null )
182195
183- loadCapabilitiesAndUpdateSettings()
196+ loadCapabilitiesAndUpdateSettings(isOnline.value )
184197
185198 binding.settingsVersion.setOnClickListener {
186199 sendLogs()
@@ -192,7 +205,7 @@ class SettingsActivity :
192205 binding.settingsClientCertTitle.setText(R .string.nc_client_cert_setup)
193206 }
194207
195- setupCheckables()
208+ setupCheckables(isOnline.value )
196209 setupScreenLockSetting()
197210 setupNotificationSettings()
198211 setupProxyTypeSettings()
@@ -241,15 +254,15 @@ class SettingsActivity :
241254 }
242255 }
243256
244- private fun loadCapabilitiesAndUpdateSettings () {
257+ private fun loadCapabilitiesAndUpdateSettings (isOnline : Boolean ) {
245258 val capabilitiesWork = OneTimeWorkRequest .Builder (CapabilitiesWorker ::class .java).build()
246259 WorkManager .getInstance(context).enqueue(capabilitiesWork)
247260
248261 WorkManager .getInstance(context).getWorkInfoByIdLiveData(capabilitiesWork.id)
249262 .observe(this ) { workInfo ->
250263 if (workInfo?.state == WorkInfo .State .SUCCEEDED ) {
251264 getCurrentUser()
252- setupCheckables()
265+ setupCheckables(isOnline )
253266 }
254267 }
255268 }
@@ -271,11 +284,11 @@ class SettingsActivity :
271284 credentials = ApiUtils .getCredentials(currentUser!! .username, currentUser!! .token)
272285 }
273286
274- private fun setupPhoneBookIntegration () {
287+ private fun setupPhoneBookIntegration (isOnline : Boolean ) {
275288 if (CapabilitiesUtil .hasSpreedFeatureCapability(
276289 currentUser?.capabilities?.spreedCapability!! ,
277290 SpreedFeatures .PHONEBOOK_SEARCH
278- )
291+ ) && isOnline
279292 ) {
280293 binding.settingsPhoneBookIntegration.visibility = View .VISIBLE
281294 } else {
@@ -498,8 +511,8 @@ class SettingsActivity :
498511 }
499512 }
500513
501- private fun setupSourceCodeUrl () {
502- if (! TextUtils .isEmpty(resources!! .getString(R .string.nc_source_code_url))) {
514+ private fun setupSourceCodeUrl (isOnline : Boolean ) {
515+ if (! TextUtils .isEmpty(resources!! .getString(R .string.nc_source_code_url)) && isOnline ) {
503516 binding.settingsSourceCode.setOnClickListener {
504517 startActivity(
505518 Intent (
@@ -520,8 +533,8 @@ class SettingsActivity :
520533 }
521534 }
522535
523- private fun setupPrivacyUrl () {
524- if (! TextUtils .isEmpty(resources!! .getString(R .string.nc_privacy_url))) {
536+ private fun setupPrivacyUrl (isOnline : Boolean ) {
537+ if (! TextUtils .isEmpty(resources!! .getString(R .string.nc_privacy_url)) && isOnline ) {
525538 binding.settingsPrivacy.setOnClickListener {
526539 startActivity(
527540 Intent (
@@ -535,8 +548,8 @@ class SettingsActivity :
535548 }
536549 }
537550
538- private fun setupLicenceSetting () {
539- if (! TextUtils .isEmpty(resources!! .getString(R .string.nc_gpl3_url))) {
551+ private fun setupLicenceSetting (isOnline : Boolean ) {
552+ if (! TextUtils .isEmpty(resources!! .getString(R .string.nc_gpl3_url)) && isOnline ) {
540553 binding.settingsLicence.setOnClickListener {
541554 startActivity(
542555 Intent (
@@ -928,7 +941,7 @@ class SettingsActivity :
928941 }
929942 }
930943
931- private fun setupCheckables () {
944+ private fun setupCheckables (isOnline : Boolean ) {
932945 binding.settingsShowNotificationWarningSwitch.isChecked =
933946 appPreferences.showRegularNotificationWarning
934947
@@ -945,13 +958,14 @@ class SettingsActivity :
945958 binding.settingsShowNotificationWarning.visibility = View .GONE
946959 }
947960
948- if (CapabilitiesUtil .isReadStatusAvailable(currentUser?.capabilities?.spreedCapability)) {
961+ if (CapabilitiesUtil .isReadStatusAvailable(currentUser?.capabilities?.spreedCapability)
962+ && isOnline) {
949963 binding.settingsReadPrivacySwitch.isChecked = ! CapabilitiesUtil .isReadStatusPrivate(currentUser!! )
950964 } else {
951965 binding.settingsReadPrivacy.visibility = View .GONE
952966 }
953967
954- setupTypingStatusSetting()
968+ setupTypingStatusSetting(isOnline )
955969 setupProxyUseSetting()
956970
957971 binding.settingsScreenLockSwitch.isChecked = appPreferences.isScreenLocked
@@ -1015,12 +1029,12 @@ class SettingsActivity :
10151029 }
10161030 }
10171031
1018- private fun setupTypingStatusSetting () {
1032+ private fun setupTypingStatusSetting (isOnline : Boolean ) {
10191033 if (currentUser!! .externalSignalingServer?.externalSignalingServer?.isNotEmpty() == true ) {
10201034 binding.settingsTypingStatusOnlyWithHpb.visibility = View .GONE
10211035 Log .i(TAG , " Typing Status Available: ${CapabilitiesUtil .isTypingStatusAvailable(currentUser!! )} " )
10221036
1023- if (CapabilitiesUtil .isTypingStatusAvailable(currentUser!! )) {
1037+ if (CapabilitiesUtil .isTypingStatusAvailable(currentUser!! ) && isOnline ) {
10241038 binding.settingsTypingStatusSwitch.isChecked = ! CapabilitiesUtil .isTypingStatusPrivate(currentUser!! )
10251039 } else {
10261040 binding.settingsTypingStatus.visibility = View .GONE
0 commit comments