[DO NOT USE] Restore AccountPreference

This commit is contained in:
tarsin committed 2023-06-06 01:13:59 +08:00
1 parent 6f1a08f2c7
commit 5f9f7d0ba7
2 files changed
+60 -5

No files matched your search

@@ -1,5 +1,6 @@
package com.hippo.ehviewer.ui.settings package com.hippo.ehviewer.ui.settings
import android.text.Html
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -11,22 +12,39 @@ import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import com.hippo.ehviewer.R import com.hippo.ehviewer.R
import com.hippo.ehviewer.Settings import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.EhUtils
import com.hippo.ehviewer.ui.compose.observed import com.hippo.ehviewer.ui.compose.observed
import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder
import com.hippo.ehviewer.ui.login.LocalNavController import com.hippo.ehviewer.ui.login.LocalNavController
import com.hippo.ehviewer.util.whisperClipboard
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import okhttp3.HttpUrl.Companion.toHttpUrl
@Composable @Composable
fun EhScreen() { fun EhScreen() {
val navController = LocalNavController.current val navController = LocalNavController.current
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior()
val snackbarHostState = remember { SnackbarHostState() }
val coroutineScope = rememberCoroutineScope { Dispatchers.IO }
val context = LocalContext.current
fun launchSnackBar(content: String) = coroutineScope.launch { snackbarHostState.showSnackbar(content) }
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBar( TopAppBar(
@@ -39,12 +57,45 @@ fun EhScreen() {
scrollBehavior = scrollBehavior, scrollBehavior = scrollBehavior,
) )
}, },
) { snackbarHost = { SnackbarHost(snackbarHostState) },
Column(modifier = Modifier.padding(top = it.calculateTopPadding()).nestedScroll(scrollBehavior.nestedScrollConnection).verticalScroll(rememberScrollState())) { ) { paddingValues ->
val signOutMessage = stringResource(id = R.string.settings_eh_sign_out_tip)
Column(modifier = Modifier.padding(top = paddingValues.calculateTopPadding()).nestedScroll(scrollBehavior.nestedScrollConnection).verticalScroll(rememberScrollState())) {
Preference( Preference(
title = stringResource(id = R.string.account_name), title = stringResource(id = R.string.account_name),
summary = stringResource(id = R.string.settings_eh_identity_cookies_tourist), summary = Settings.displayName ?: stringResource(id = R.string.settings_eh_identity_cookies_tourist),
) ) {
val builder = BaseDialogBuilder(context)
val eCookies = EhCookieStore.getCookies(EhUrl.HOST_E.toHttpUrl())
val exCookies = EhCookieStore.getCookies(EhUrl.HOST_EX.toHttpUrl())
var ipbMemberId: String? = null
var ipbPassHash: String? = null
var igneous: String? = null
(eCookies + exCookies).forEach {
when (it.name) {
EhCookieStore.KEY_IPB_MEMBER_ID -> ipbMemberId = it.value
EhCookieStore.KEY_IPB_PASS_HASH -> ipbPassHash = it.value
EhCookieStore.KEY_IGNEOUS -> igneous = it.value
}
}
val message = if (ipbMemberId != null || ipbPassHash != null || igneous != null) {
val str = EhCookieStore.KEY_IPB_MEMBER_ID + ": " + ipbMemberId + "<br>" + EhCookieStore.KEY_IPB_PASS_HASH + ": " + ipbPassHash + "<br>" + EhCookieStore.KEY_IGNEOUS + ": " + igneous
val spanned = Html.fromHtml(context.getString(R.string.settings_eh_identity_cookies_signed, str), Html.FROM_HTML_MODE_LEGACY)
builder.setMessage(spanned)
str.replace("<br>", "\n")
} else {
builder.setMessage(context.getString(R.string.settings_eh_identity_cookies_tourist))
null
}
if (message != null) {
builder.setNeutralButton(R.string.settings_eh_identity_cookies_copy) { _, _ -> context whisperClipboard message }
}
builder.setPositiveButton(R.string.settings_eh_sign_out) { _, _ ->
EhUtils.signOut()
launchSnackBar(signOutMessage)
}
builder.show()
}
Preference( Preference(
title = stringResource(id = R.string.image_limits), title = stringResource(id = R.string.image_limits),
) )
@@ -139,7 +190,7 @@ fun EhScreen() {
title = stringResource(id = R.string.settings_eh_hide_hv_events), title = stringResource(id = R.string.settings_eh_hide_hv_events),
value = Settings::requestNews, value = Settings::requestNews,
) )
Spacer(modifier = Modifier.size(it.calculateBottomPadding())) Spacer(modifier = Modifier.size(paddingValues.calculateBottomPadding()))
} }
} }
} }
@@ -34,6 +34,10 @@ infix fun Context.tellClipboardWithToast(text: String?) {
addTextToClipboard(text, false, true) addTextToClipboard(text, false, true)
} }
infix fun Context.whisperClipboard(text: String?) {
addTextToClipboard(text, true, false)
}
@JvmOverloads @JvmOverloads
fun Context.addTextToClipboard(text: CharSequence?, isSensitive: Boolean, useToast: Boolean = false) { fun Context.addTextToClipboard(text: CharSequence?, isSensitive: Boolean, useToast: Boolean = false) {
clipboardManager.apply { clipboardManager.apply {