[tbb-commits] [Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.5-1] fixup! Add Tor integration and UI
Dan Ballard (@dan)
git at gitlab.torproject.org
Tue May 7 16:56:40 UTC 2024
Dan Ballard pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android
Commits:
737cb590 by clairehurst at 2024-05-06T15:30:26-06:00
fixup! Add Tor integration and UI
- - - - -
2 changed files:
- fenix/app/src/main/java/org/mozilla/fenix/tor/TorLogsComposeFragment.kt
- fenix/app/src/main/java/org/mozilla/fenix/tor/TorLogsViewModel.kt
Changes:
=====================================
fenix/app/src/main/java/org/mozilla/fenix/tor/TorLogsComposeFragment.kt
=====================================
@@ -8,7 +8,9 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
@@ -16,15 +18,20 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.selection.DisableSelection
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll
+import androidx.compose.material.FloatingActionButton
+import androidx.compose.material.Icon
+import androidx.compose.material.Scaffold
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import mozilla.components.ui.colors.PhotonColors
+import org.mozilla.fenix.R
class TorLogsComposeFragment : Fragment() {
private val viewModel: TorLogsViewModel by viewModels()
@@ -36,47 +43,72 @@ class TorLogsComposeFragment : Fragment() {
): View {
return ComposeView(requireContext()).apply {
setContent {
- SelectionContainer {
- Column(
- // Column instead of LazyColumn so that you can select all the logs, and not just one "screen" at a time
- // The logs won't be too big so loading them all instead of just whats visible shouldn't be a big deal
- modifier = Modifier
- .fillMaxSize()
- .verticalScroll(state = rememberScrollState(), reverseScrolling = true),
- ) {
- for (log in viewModel.torLogs) {
- LogRow(log = log)
- }
- }
+ Scaffold(
+ floatingActionButton = { CopyLogsButton() },
+ content = { TorLogs(paddingValues = it) },
+ )
+ }
+ }
+ }
+
+ @Composable
+ private fun TorLogs(paddingValues: PaddingValues) {
+ SelectionContainer {
+ Column(
+ // Column instead of LazyColumn so that you can select all the logs, and not just one "screen" at a time
+ // The logs won't be too big so loading them all instead of just whats visible shouldn't be a big deal
+ modifier = Modifier
+ .fillMaxSize()
+ .verticalScroll(state = rememberScrollState(), reverseScrolling = true)
+ .padding(paddingValues)
+ .background(PhotonColors.Ink50), // Standard background color
+ ) {
+ for (log in viewModel.torLogs) {
+ LogRow(log = log)
}
}
}
}
-}
- at Composable
- at Stable
-fun LogRow(log: TorLog, modifier: Modifier = Modifier) {
- Column(
- modifier
- .fillMaxWidth()
- .padding(
- start = 16.dp,
- end = 16.dp,
- bottom = 16.dp,
- ),
- ) {
- DisableSelection {
+ @Composable
+ @Stable
+ private fun LogRow(log: TorLog, modifier: Modifier = Modifier) {
+ Column(
+ modifier
+ .fillMaxWidth()
+ .padding(
+ start = 16.dp,
+ end = 16.dp,
+ bottom = 16.dp,
+ ),
+ ) {
+ DisableSelection {
+ Text(
+ text = log.timestamp.toString(),
+ color = PhotonColors.LightGrey40,
+ modifier = modifier
+ .padding(bottom = 4.dp),
+ )
+ }
Text(
- text = log.timestamp.toString(),
- color = PhotonColors.LightGrey40,
- modifier = modifier
- .padding(bottom = 4.dp),
+ text = log.text,
+ color = PhotonColors.LightGrey05,
)
}
- Text(
- text = log.text,
- color = PhotonColors.LightGrey05,
+ }
+
+ @Composable
+ private fun CopyLogsButton() {
+ FloatingActionButton(
+ onClick = { viewModel.copyAllLogsToClipboard() },
+ content = {
+ Icon(
+ painter = painterResource(id = R.drawable.ic_copy),
+ contentDescription = getString(R.string.share_copy_link_to_clipboard),
+ )
+ },
+ backgroundColor = PhotonColors.Violet50, // Same color as connect button
+ contentColor = PhotonColors.LightGrey05,
)
}
}
=====================================
fenix/app/src/main/java/org/mozilla/fenix/tor/TorLogsViewModel.kt
=====================================
@@ -63,10 +63,10 @@ class TorLogsViewModel(application: Application) : AndroidViewModel(application)
}
}
- fun copyAllLogsToClipboard() { // TODO add kebab menu in top right corner which includes option to "Copy all logs"
+ fun copyAllLogsToClipboard() {
clipboardManager.setPrimaryClip(
ClipData.newPlainText(
- "Copied Text",
+ getApplication<Application>().getString(R.string.preferences_tor_logs),
getAllTorLogs(),
),
)
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/737cb5908a40e57645c34734413116b77f8a6d3b
--
This project does not include diff previews in email notifications.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/737cb5908a40e57645c34734413116b77f8a6d3b
You're receiving this email because of your account on gitlab.torproject.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tbb-commits/attachments/20240507/180aada0/attachment-0001.htm>
More information about the tbb-commits
mailing list