Skip to content

Commit 7b0e9ae

Browse files
committed
show only online settings when online
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
1 parent 866898d commit 7b0e9ae

3 files changed

Lines changed: 48 additions & 26 deletions

File tree

app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
4242
import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager
4343
import com.nextcloud.talk.components.ColoredStatusBar
4444
import com.nextcloud.talk.components.StandardAppBar
45+
import com.nextcloud.talk.data.network.NetworkMonitor
4546
import com.nextcloud.talk.users.UserManager
4647
import com.nextcloud.talk.utils.BrandingUtils
4748
import com.nextcloud.talk.utils.ClosedInterfaceImpl
@@ -70,6 +71,9 @@ class DiagnoseActivity : BaseActivity() {
7071
@Inject
7172
lateinit var userManager: UserManager
7273

74+
@Inject
75+
lateinit var networkMonitor: NetworkMonitor
76+
7377
@Inject
7478
lateinit var platformPermissionUtil: PlatformPermissionUtil
7579

@@ -112,6 +116,7 @@ class DiagnoseActivity : BaseActivity() {
112116
MaterialTheme(
113117
colorScheme = colorScheme
114118
) {
119+
val isOnline = networkMonitor.isOnline.collectAsState().value
115120
ColoredStatusBar()
116121
Scaffold(
117122
modifier = Modifier
@@ -144,7 +149,8 @@ class DiagnoseActivity : BaseActivity() {
144149
viewState = viewState,
145150
onTestPushClick = { diagnoseViewModel.fetchTestPushResult() },
146151
onDismissDialog = { diagnoseViewModel.dismissDialog() },
147-
isGooglePlayServicesAvailable = isGooglePlayServicesAvailable
152+
isGooglePlayServicesAvailable = isGooglePlayServicesAvailable,
153+
isOnline = isOnline
148154
)
149155
}
150156
}

app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseContentComposable.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ fun DiagnoseContentComposable(
5959
viewState: NotificationUiState,
6060
onTestPushClick: () -> Unit,
6161
onDismissDialog: () -> Unit,
62-
isGooglePlayServicesAvailable: Boolean
62+
isGooglePlayServicesAvailable: Boolean,
63+
isOnline:Boolean
6364
) {
6465
val context = LocalContext.current
6566
Column(
@@ -101,7 +102,7 @@ fun DiagnoseContentComposable(
101102
}
102103
}
103104
}
104-
if (isGooglePlayServicesAvailable) {
105+
if (isGooglePlayServicesAvailable && isOnline) {
105106
ShowTestPushButton(onTestPushClick)
106107
}
107108
ShowNotificationData(isLoading, showDialog, context, viewState, onDismissDialog)
@@ -259,6 +260,7 @@ fun DiagnoseContentPreview() {
259260
NotificationUiState.Success("Test notification successful"),
260261
{},
261262
{},
263+
true,
262264
true
263265
)
264266
}

app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import android.view.View
3232
import android.view.WindowManager
3333
import android.widget.Toast
3434
import androidx.appcompat.app.AlertDialog
35+
import androidx.compose.runtime.MutableState
36+
import androidx.compose.runtime.mutableStateOf
3537
import androidx.core.content.ContextCompat
3638
import androidx.core.content.res.ResourcesCompat
3739
import androidx.core.graphics.drawable.toDrawable
@@ -56,6 +58,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
5658
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.setAppTheme
5759
import com.nextcloud.talk.conversationlist.ConversationsListActivity
5860
import com.nextcloud.talk.conversationlist.ConversationsListActivity.Companion.NOTIFICATION_WARNING_DATE_NOT_SET
61+
import com.nextcloud.talk.data.network.NetworkMonitor
5962
import com.nextcloud.talk.data.user.model.User
6063
import com.nextcloud.talk.databinding.ActivitySettingsBinding
6164
import 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

Comments
 (0)