[DO NOT USE] Restore AccountPreference
This commit is contained in:
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 {
|
||||||
|
|||||||
Reference in new issue
Block a user