Add option to include a screenshot of the popup

This commit is contained in:
Kuba Orlik 2021-11-11 11:10:52 +01:00
parent e2922b0342
commit 2bcf72f652
2 changed files with 43 additions and 13 deletions

View File

@ -1,7 +1,7 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { RequestCluster } from "../request-cluster"; import { RequestCluster } from "../request-cluster";
import { StolenDataEntry } from "../stolen-data-entry"; import { StolenDataEntry } from "../stolen-data-entry";
import { getDate } from "../util"; import { getDate, toBase64 } from "../util";
import DomainSummary from "./domain-summary"; import DomainSummary from "./domain-summary";
type PopupState = "not_clicked" | "clicked_but_invalid"; type PopupState = "not_clicked" | "clicked_but_invalid";
@ -17,6 +17,8 @@ export default function EmailTemplate({
const [acceptAllName, setAcceptAllName] = useState<string>( const [acceptAllName, setAcceptAllName] = useState<string>(
"Zaakceptuj wszystkie" "Zaakceptuj wszystkie"
); );
const [popupScreenshotBase64, setPopupScreenshotBase64] =
useState<string>(null);
return ( return (
<div> <div>
@ -30,18 +32,35 @@ export default function EmailTemplate({
<option value="clicked_but_invalid">Kliknięte, ale nieważne</option> <option value="clicked_but_invalid">Kliknięte, ale nieważne</option>
</select> </select>
{popupState === "clicked_but_invalid" ? ( {popupState === "clicked_but_invalid" ? (
<div> <>
<label htmlFor="acceptAllName"> <div>
Tekst na przycisku do zatwierdzania wszystkich zgód: <label htmlFor="acceptAllName">
</label> Tekst na przycisku do zatwierdzania wszystkich zgód:
<input </label>
{...{ <input
type: "text", {...{
value: acceptAllName, type: "text",
onChange: (e) => setAcceptAllName(e.target.value), value: acceptAllName,
}} onChange: (e) => setAcceptAllName(e.target.value),
/> }}
</div> />
</div>
<div>
<label htmlFor="popup-screenshot">
Zrzut ekranu z tego, jak wyglądał popup przed kliknięciem
{acceptAllName}:
</label>
<input
{...{
type: "file",
id: "popup-screenshot",
onChange: async (e) => {
setPopupScreenshotBase64(await toBase64(e.target.files[0]));
},
}}
/>
</div>
</>
) : null} ) : null}
<p> <p>
Dzień dobry, w dniu {getDate()} odwiedziłem stronę{" "} Dzień dobry, w dniu {getDate()} odwiedziłem stronę{" "}
@ -76,6 +95,7 @@ export default function EmailTemplate({
2016/679 z dnia 27 kwietnia 2016 2016/679 z dnia 27 kwietnia 2016
</em> </em>
). ).
{<img {...{ src: popupScreenshotBase64 }} />}
</p> </p>
) : null} ) : null}
<p> <p>

10
util.ts
View File

@ -128,3 +128,13 @@ export function getDate() {
.toString() .toString()
.padStart(2, "0")}-${d.getDate().toString().padStart(2, "0")}`; .padStart(2, "0")}-${d.getDate().toString().padStart(2, "0")}`;
} }
export function toBase64(file: File): Promise<string> {
return new Promise((resolve) => {
const FR = new FileReader();
FR.addEventListener("load", (e) => {
resolve(e.target.result as string);
});
FR.readAsDataURL(file);
});
}