Import cookies from clipboard
This commit is contained in:
4 files changed
+105
-1
No files matched your search
@@ -16,10 +16,15 @@
|
||||
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipDescription;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Paint;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -61,6 +66,10 @@ public class CookieSignInScene extends SolidScene implements EditText.OnEditorAc
|
||||
private EditText mIgneous;
|
||||
@Nullable
|
||||
private View mOk;
|
||||
@Nullable
|
||||
private TextView mFromClipboard;
|
||||
@Nullable
|
||||
private ClipboardManager clipboardManager;
|
||||
|
||||
// false for error
|
||||
private static boolean checkIpbMemberId(String id) {
|
||||
@@ -112,10 +121,14 @@ public class CookieSignInScene extends SolidScene implements EditText.OnEditorAc
|
||||
mIgneous = mIgneousLayout.getEditText();
|
||||
AssertUtils.assertNotNull(mIgneous);
|
||||
mOk = ViewUtils.$$(view, R.id.ok);
|
||||
mFromClipboard = (TextView) ViewUtils.$$(view, R.id.from_clipboard);
|
||||
|
||||
mFromClipboard.setPaintFlags(mFromClipboard.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
|
||||
|
||||
mIpbPassHash.setOnEditorActionListener(this);
|
||||
|
||||
mOk.setOnClickListener(this);
|
||||
mFromClipboard.setOnClickListener(this);
|
||||
|
||||
// Try to get old version cookie info
|
||||
Context context = getContext2();
|
||||
@@ -147,7 +160,7 @@ public class CookieSignInScene extends SolidScene implements EditText.OnEditorAc
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
clipboardManager = (ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
showSoftInput(mIpbMemberId);
|
||||
}
|
||||
|
||||
@@ -167,6 +180,8 @@ public class CookieSignInScene extends SolidScene implements EditText.OnEditorAc
|
||||
public void onClick(View v) {
|
||||
if (mOk == v) {
|
||||
enter();
|
||||
} else if (mFromClipboard == v) {
|
||||
fillCookiesFromClipboard();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,4 +254,68 @@ public class CookieSignInScene extends SolidScene implements EditText.OnEditorAc
|
||||
store.addCookie(newCookie(EhCookieStore.KEY_IGNEOUS, igneous, EhUrl.DOMAIN_EX));
|
||||
}
|
||||
}
|
||||
|
||||
private void fillCookiesFromClipboard() {
|
||||
hideSoftInput();
|
||||
try {
|
||||
String pasteData;
|
||||
if (!clipboardManager.hasPrimaryClip()/* || !clipboardManager.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)*/) {
|
||||
showTip(R.string.from_clipboard_error, LENGTH_SHORT);
|
||||
} else {
|
||||
ClipData.Item item = clipboardManager.getPrimaryClip().getItemAt(0);
|
||||
pasteData = String.valueOf(item.coerceToText(requireContext()));
|
||||
if (!TextUtils.isEmpty(pasteData)) {
|
||||
String[] kvs;
|
||||
if (pasteData.contains(";")) {
|
||||
kvs = pasteData.split(";");
|
||||
} else if (pasteData.contains("\n")) {
|
||||
kvs = pasteData.split("\n");
|
||||
} else {
|
||||
showTip(R.string.from_clipboard_error, LENGTH_SHORT);
|
||||
return;
|
||||
}
|
||||
if (kvs.length < 3) {
|
||||
showTip(R.string.from_clipboard_error, LENGTH_SHORT);
|
||||
return;
|
||||
}
|
||||
for (String s : kvs) {
|
||||
String[] kv;
|
||||
if (s.contains("=")) {
|
||||
kv = s.split("=");
|
||||
} else if (s.contains(":")) {
|
||||
kv = s.split(":");
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
if (kv.length != 2) {
|
||||
continue;
|
||||
}
|
||||
switch (kv[0].trim().toLowerCase()) {
|
||||
case "ipb_member_id":
|
||||
if (mIpbMemberId != null) {
|
||||
mIpbMemberId.setText(kv[1].trim());
|
||||
}
|
||||
break;
|
||||
case "ipb_pass_hash":
|
||||
if (mIpbPassHash != null) {
|
||||
mIpbPassHash.setText(kv[1].trim());
|
||||
}
|
||||
break;
|
||||
case "igneous":
|
||||
if (mIgneous != null) {
|
||||
mIgneous.setText(kv[1].trim());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
enter();
|
||||
} else {
|
||||
showTip(R.string.from_clipboard_error, LENGTH_SHORT);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
showTip(R.string.from_clipboard_error, LENGTH_SHORT);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user