// Copyright (c) Tailscale Inc & AUTHORS // SPDX-License-Identifier: BSD-3-Clause package com.tailscale.ipn.ui.view import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.safeContentPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.tailscale.ipn.R import com.tailscale.ipn.mdm.MDMSettings import com.tailscale.ipn.ui.viewModel.IpnViewModel @Composable fun ManagedByView(backToSettings: BackNavigation, model: IpnViewModel = viewModel()) { Scaffold(topBar = { Header(R.string.managed_by, onBack = backToSettings) }) { innerPadding -> Column( verticalArrangement = Arrangement.spacedBy(space = 20.dp, alignment = Alignment.CenterVertically), horizontalAlignment = Alignment.Start, modifier = Modifier.fillMaxWidth().safeContentPadding().verticalScroll(rememberScrollState())) { val managedByOrganization = MDMSettings.managedByOrganizationName.flow.collectAsState().value val managedByCaption = MDMSettings.managedByCaption.flow.collectAsState().value val managedByURL = MDMSettings.managedByURL.flow.collectAsState().value managedByOrganization?.let { Text(stringResource(R.string.managed_by_explainer_orgName, it)) } ?: run { Text(stringResource(R.string.managed_by_explainer)) } managedByCaption?.let { if (it.isNotEmpty()) { Text(it) } } managedByURL?.let { OpenURLButton(stringResource(R.string.open_support), it) } } } }