fix #7077 file support

This commit is contained in:
Sebastian 2022-06-24 14:28:45 -03:00
parent 2f8fd783b6
commit 73551c83c4
No known key found for this signature in database
GPG Key ID: BE4FF68352439FC1
5 changed files with 34 additions and 21 deletions

View File

@ -49,7 +49,7 @@ export function BackupFinishedScreen(): VNode {
version {sd.policy_version} version {sd.policy_version}
{sd.policy_expiration.t_s !== "never" {sd.policy_expiration.t_s !== "never"
? ` expires at: ${format( ? ` expires at: ${format(
new Date(sd.policy_expiration.t_s), new Date(sd.policy_expiration.t_s * 1000),
"dd-MM-yyyy", "dd-MM-yyyy",
)}` )}`
: " without expiration date"} : " without expiration date"}

View File

@ -135,7 +135,7 @@ export function ContinentSelectionScreen(): VNode {
Choose the country that issued most of your long-term legal Choose the country that issued most of your long-term legal
documents or personal identifiers. documents or personal identifiers.
</p> </p>
<div {/* <div
style={{ style={{
border: "1px solid gray", border: "1px solid gray",
borderRadius: "0.5em", borderRadius: "0.5em",
@ -149,7 +149,7 @@ export function ContinentSelectionScreen(): VNode {
country, you will be asked for a simple number and not real, country, you will be asked for a simple number and not real,
personal identifiable information. personal identifiable information.
</p> </p>
</div> </div> */}
</div> </div>
</div> </div>
</AnastasisClientFrame> </AnastasisClientFrame>

View File

@ -56,9 +56,11 @@ export function RecoveryFinishedScreen(): VNode {
); );
} }
const secret = bytesToString(decodeCrock(encodedSecret.value)); const secret = bytesToString(decodeCrock(encodedSecret.value));
const contentURI = `data:${encodedSecret.mime},${secret}`; const plainText =
// const fileName = encodedSecret['filename'] encodedSecret.value.length < 1000 && encodedSecret.mime === "text/plain";
// data:plain/text;base64,asdasd const contentURI = !plainText
? secret
: `data:${encodedSecret.mime},${secret}`;
return ( return (
<AnastasisClientFrame title="Recovery Success" hideNav> <AnastasisClientFrame title="Recovery Success" hideNav>
<h2 class="subtitle">Your secret was recovered</h2> <h2 class="subtitle">Your secret was recovered</h2>
@ -68,25 +70,36 @@ export function RecoveryFinishedScreen(): VNode {
</p> </p>
)} )}
<div class="block buttons" disabled={copied}> <div class="block buttons" disabled={copied}>
<button {plainText ? (
class="button" <button
onClick={() => { class="button"
navigator.clipboard.writeText(secret); onClick={() => {
setCopied(true); 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 "> <div class="icon is-small ">
<i class="mdi mdi-download" /> <i class="mdi mdi-download" />
</div> </div>
<span>Save as</span> <span>Download content</span>
</a> </a>
</div> </div>
<div class="block"> {plainText ? (
<QR text={secret} /> <div class="block">
</div> <QR text={secret} />
</div>
) : undefined}
</AnastasisClientFrame> </AnastasisClientFrame>
); );
} }

View File

@ -52,7 +52,7 @@ export function SecretEditorScreen(): VNode {
const secretNext = async (): Promise<void> => { const secretNext = async (): Promise<void> => {
const secret = secretFile const secret = secretFile
? { ? {
value: encodeCrock(stringToBytes(secretValue)), value: encodeCrock(stringToBytes(secretFile.content)),
filename: secretFile.name, filename: secretFile.name,
mime: secretFile.type, mime: secretFile.type,
} }

View File

@ -21,7 +21,7 @@ import { AnastasisClientFrame } from "../index.js";
import { AuthMethodSetupProps } from "./index.js"; import { AuthMethodSetupProps } from "./index.js";
const EMAIL_PATTERN = 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({ export function AuthMethodEmailSetup({
cancel, cancel,