Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/design/panel-de-firma.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ Cada uno tiene su historia en «Flujos/Firma/SigningPanel», salvo que se diga o
| Sin certificados | `NoCertificates` | El selector se queda en su sitio, desactivado y diciendo «Sin certificados»; debajo, «Añadir un certificado…» (primario, el ancho que sobra) y «Volver a buscar» (secundario); el pie deja solo «Firmar», desactivado |
| Sin certificados, con lector | `NoCertificatesWithReader` | La misma forma, con la línea del lector entre el selector desactivado y las salidas |
| Búsqueda fallida | `SearchFailed` | La misma forma, con el error clasificado debajo de las salidas; la caja dice que no se pudo buscar, no que no haya ninguno |
| Lector sin tarjeta, leyendo, tarjeta lista e ilegible | `ReaderWithoutCard`, `ReadingTheCard`, `DnieReady`, `CardReady`, `UnreadableCardOnWindows`, `UnreadableCardOnLinux` | La línea del lector bajo el selector; sin lector (`Ready`), no hay línea. Ilegible, añade la ayuda de la plataforma: Windows Update o la página de la DGP en Windows, OpenSC en Linux. Mientras se lee, los demás certificados se siguen pudiendo elegir |
| Lector sin tarjeta, leyendo, tarjeta lista e ilegible | `ReaderWithoutCard`, `ReadingTheCard`, `DnieReady`, `CardReady`, `UnreadableCardOnWindows`, `UnreadableCardOnMacos`, `UnreadableCardOnLinux` | La línea del lector bajo el selector; sin lector (`Ready`), no hay línea. Ilegible, añade la ayuda de la plataforma: Windows Update o la página de la DGP en Windows, OpenSC o la página de la DGP en macOS, OpenSC en Linux. Mientras se lee, los demás certificados se siguen pudiendo elegir |
| Varios certificados | `SeveralCertificates` | El desplegable los lista todos al abrirse |
| Certificados abiertos | `Open` de «Dominio/Firma/CertificateSelect» | El buscador en lugar de la caja y la lista flotando |
| Firma visible | `VisibleSignature*` | Una página, varias, todas, otra página a la vista y sin colocar |
Expand Down
3 changes: 3 additions & 0 deletions rfirma-app/po/ca.po
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,9 @@ msgstr ""
msgid "panel.certificate.reader.unreadableHelp.linux"
msgstr "Instal·la OpenSC perquè l'rFirma la pugui llegir."

msgid "panel.certificate.reader.unreadableHelp.macos"
msgstr "Instal·la OpenSC o el mòdul de la DGP perquè l'rFirma la pugui llegir."

#. {{issuer}} es el nombre de la entidad emisora del certificado.
msgid "panel.certificate.issuer"
msgstr "Emès per {{issuer}}"
Expand Down
3 changes: 3 additions & 0 deletions rfirma-app/po/en.po
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,9 @@ msgstr ""
msgid "panel.certificate.reader.unreadableHelp.linux"
msgstr "Install OpenSC so that rFirma can read it."

msgid "panel.certificate.reader.unreadableHelp.macos"
msgstr "Install OpenSC or the DGP module so that rFirma can read it."

#. {{issuer}} es el nombre de la entidad emisora del certificado.
msgid "panel.certificate.issuer"
msgstr "Issued by {{issuer}}"
Expand Down
3 changes: 3 additions & 0 deletions rfirma-app/po/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,9 @@ msgstr ""
msgid "panel.certificate.reader.unreadableHelp.linux"
msgstr "Instala OpenSC para que rFirma pueda leerla."

msgid "panel.certificate.reader.unreadableHelp.macos"
msgstr "Instala OpenSC o el módulo de la DGP para que rFirma pueda leerla."

#. {{issuer}} es el nombre de la entidad emisora del certificado.
msgid "panel.certificate.issuer"
msgstr "Emitido por {{issuer}}"
Expand Down
3 changes: 3 additions & 0 deletions rfirma-app/po/eu.po
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,9 @@ msgstr ""
msgid "panel.certificate.reader.unreadableHelp.linux"
msgstr "Instalatu OpenSC rFirmak txartela irakur dezan."

msgid "panel.certificate.reader.unreadableHelp.macos"
msgstr "Instalatu OpenSC edo DGPren modulua rFirmak txartela irakur dezan."

#. {{issuer}} es el nombre de la entidad emisora del certificado.
msgid "panel.certificate.issuer"
msgstr "Jaulkitzailea: {{issuer}}"
Expand Down
3 changes: 3 additions & 0 deletions rfirma-app/po/gl.po
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,9 @@ msgstr ""
msgid "panel.certificate.reader.unreadableHelp.linux"
msgstr "Instala OpenSC para que rFirma poida lela."

msgid "panel.certificate.reader.unreadableHelp.macos"
msgstr "Instala OpenSC ou o módulo da DGP para que rFirma poida lela."

#. {{issuer}} es el nombre de la entidad emisora del certificado.
msgid "panel.certificate.issuer"
msgstr "Emitido por {{issuer}}"
Expand Down
3 changes: 3 additions & 0 deletions rfirma-app/po/messages.pot
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,9 @@ msgstr ""
msgid "panel.certificate.reader.unreadableHelp.linux"
msgstr ""

msgid "panel.certificate.reader.unreadableHelp.macos"
msgstr ""

#. {{issuer}} es el nombre de la entidad emisora del certificado.
msgid "panel.certificate.issuer"
msgstr ""
Expand Down
7 changes: 7 additions & 0 deletions rfirma-app/src/signing/ReaderLine.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ describe("the reader line under the certificate selector", () => {
expect(screen.getByRole("status")).toHaveTextContent(/OpenSC/);
});

it("points to OpenSC and the DGP page on macOS", () => {
renderWithCatalog(<ReaderLine reader={{ kind: "unreadable" }} platform="macos" />);

expect(screen.getByRole("status")).toHaveTextContent(/OpenSC/);
expect(screen.getByRole("status")).toHaveTextContent(/DGP/);
});

it("offers nothing on a platform it has no advice for", () => {
renderWithCatalog(<ReaderLine reader={{ kind: "unreadable" }} platform="other" />);

Expand Down
22 changes: 14 additions & 8 deletions rfirma-app/src/signing/ReaderLine.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ import { hasAReader, type ReaderStatus } from "./certificate";
import "./ReaderLine.css";

/** La plataforma de la que depende la ayuda para una tarjeta ilegible. */
export type CardHelpPlatform = "windows" | "linux" | "other";
export type CardHelpPlatform = "windows" | "macos" | "linux" | "other";

/** La plataforma que corresponde al `userAgent` del WebView. */
function cardHelpPlatformFor(userAgent: string): CardHelpPlatform {
if (/windows/i.test(userAgent)) return "windows";
if (/macintosh|mac os x/i.test(userAgent)) return "macos";
if (/linux/i.test(userAgent) && !/android/i.test(userAgent)) return "linux";
return "other";
}
Expand Down Expand Up @@ -69,11 +70,16 @@ function readerText(
function CardHelp({ platform }: { platform: CardHelpPlatform }) {
const { t } = useTranslation();
if (platform === "other") return null;
return (
<span className="reader-line__help">
{platform === "windows"
? t("panel.certificate.reader.unreadableHelp.windows")
: t("panel.certificate.reader.unreadableHelp.linux")}
</span>
);
return <span className="reader-line__help">{cardHelpText(platform, t)}</span>;
}

function cardHelpText(platform: Exclude<CardHelpPlatform, "other">, t: TFunction): string {
switch (platform) {
case "windows":
return t("panel.certificate.reader.unreadableHelp.windows");
case "macos":
return t("panel.certificate.reader.unreadableHelp.macos");
case "linux":
return t("panel.certificate.reader.unreadableHelp.linux");
}
}
2 changes: 2 additions & 0 deletions rfirma-app/src/signing/SigningPanel.presentation.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ const {
CardReady,
UnreadableCardOnLinux,
UnreadableCardOnWindows,
UnreadableCardOnMacos,
NoCertificatesWithReader,
} = composed;

Expand Down Expand Up @@ -135,6 +136,7 @@ describe("the signing panel, by state", () => {
{ Story: CardReady, said: "Tarjeta lista" },
{ Story: UnreadableCardOnWindows, said: "rFirma no puede leer la tarjeta del lector" },
{ Story: UnreadableCardOnLinux, said: "rFirma no puede leer la tarjeta del lector" },
{ Story: UnreadableCardOnMacos, said: "rFirma no puede leer la tarjeta del lector" },
] as const;

for (const { Story, said } of cases) {
Expand Down
4 changes: 4 additions & 0 deletions rfirma-app/src/signing/SigningPanel.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,10 @@ export const UnreadableCardOnLinux: Story = {
args: { certificate: withReader({ kind: "unreadable" }), platform: "linux" },
};

export const UnreadableCardOnMacos: Story = {
args: { certificate: withReader({ kind: "unreadable" }), platform: "macos" },
};

export const NoCertificatesWithReader: Story = {
args: { certificate: withReader({ kind: "noCard" }, { kind: "empty" }) },
};
Expand Down
Loading