fix #7077 file support
This commit is contained in:
parent
2f8fd783b6
commit
73551c83c4
@ -49,7 +49,7 @@ export function BackupFinishedScreen(): VNode {
|
||||
version {sd.policy_version}
|
||||
{sd.policy_expiration.t_s !== "never"
|
||||
? ` expires at: ${format(
|
||||
new Date(sd.policy_expiration.t_s),
|
||||
new Date(sd.policy_expiration.t_s * 1000),
|
||||
"dd-MM-yyyy",
|
||||
)}`
|
||||
: " without expiration date"}
|
||||
|
@ -135,7 +135,7 @@ export function ContinentSelectionScreen(): VNode {
|
||||
Choose the country that issued most of your long-term legal
|
||||
documents or personal identifiers.
|
||||
</p>
|
||||
<div
|
||||
{/* <div
|
||||
style={{
|
||||
border: "1px solid gray",
|
||||
borderRadius: "0.5em",
|
||||
@ -149,7 +149,7 @@ export function ContinentSelectionScreen(): VNode {
|
||||
country, you will be asked for a simple number and not real,
|
||||
personal identifiable information.
|
||||
</p>
|
||||
</div>
|
||||
</div> */}
|
||||
</div>
|
||||
</div>
|
||||
</AnastasisClientFrame>
|
||||
|
@ -56,9 +56,11 @@ export function RecoveryFinishedScreen(): VNode {
|
||||
);
|
||||
}
|
||||
const secret = bytesToString(decodeCrock(encodedSecret.value));
|
||||
const contentURI = `data:${encodedSecret.mime},${secret}`;
|
||||
// const fileName = encodedSecret['filename']
|
||||
// data:plain/text;base64,asdasd
|
||||
const plainText =
|
||||
encodedSecret.value.length < 1000 && encodedSecret.mime === "text/plain";
|
||||
const contentURI = !plainText
|
||||
? secret
|
||||
: `data:${encodedSecret.mime},${secret}`;
|
||||
return (
|
||||
<AnastasisClientFrame title="Recovery Success" hideNav>
|
||||
<h2 class="subtitle">Your secret was recovered</h2>
|
||||
@ -68,25 +70,36 @@ export function RecoveryFinishedScreen(): VNode {
|
||||
</p>
|
||||
)}
|
||||
<div class="block buttons" disabled={copied}>
|
||||
<button
|
||||
class="button"
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(secret);
|
||||
setCopied(true);
|
||||
}}
|
||||
{plainText ? (
|
||||
<button
|
||||
class="button"
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(secret);
|
||||
setCopied(true);
|
||||
}}
|
||||
>
|
||||
{!copied ? "Copy" : "Copied"}
|
||||
</button>
|
||||
) : undefined}
|
||||
|
||||
<a
|
||||
class="button is-info"
|
||||
download={
|
||||
encodedSecret.filename ? encodedSecret.filename : "secret.file"
|
||||
}
|
||||
href={contentURI}
|
||||
>
|
||||
{!copied ? "Copy" : "Copied"}
|
||||
</button>
|
||||
<a class="button is-info" download="secret.txt" href={contentURI}>
|
||||
<div class="icon is-small ">
|
||||
<i class="mdi mdi-download" />
|
||||
</div>
|
||||
<span>Save as</span>
|
||||
<span>Download content</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="block">
|
||||
<QR text={secret} />
|
||||
</div>
|
||||
{plainText ? (
|
||||
<div class="block">
|
||||
<QR text={secret} />
|
||||
</div>
|
||||
) : undefined}
|
||||
</AnastasisClientFrame>
|
||||
);
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ export function SecretEditorScreen(): VNode {
|
||||
const secretNext = async (): Promise<void> => {
|
||||
const secret = secretFile
|
||||
? {
|
||||
value: encodeCrock(stringToBytes(secretValue)),
|
||||
value: encodeCrock(stringToBytes(secretFile.content)),
|
||||
filename: secretFile.name,
|
||||
mime: secretFile.type,
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ import { AnastasisClientFrame } from "../index.js";
|
||||
import { AuthMethodSetupProps } from "./index.js";
|
||||
|
||||
const EMAIL_PATTERN =
|
||||
/^(([^<>()[]\\.,;:\s@"]+(\.[^<>()[]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||
|
||||
export function AuthMethodEmailSetup({
|
||||
cancel,
|
||||
|
Loading…
Reference in New Issue
Block a user