Compare commits

...

6 Commits

Author SHA1 Message Date
Ephraim Atta-Duncan
c68eb4f198 fix: ensure duplicated fields do not retain the original fields id 2025-03-04 11:57:09 +00:00
Ephraim Atta-Duncan
33c2cbe01d fix: correctly set field as last active field 2025-03-04 04:30:13 +00:00
David Nguyen
db326cb4a9 fix: posthog reverse proxy 2025-03-04 10:48:19 +11:00
David Nguyen
d664f571d6 fix: posthog reverse proxy 2025-03-04 10:46:59 +11:00
David Nguyen
7c38970ee8 fix: update error logging 2025-03-04 01:41:39 +11:00
David Nguyen
e08d62c844 fix: remove invalid prisma zod schemas 2025-03-04 01:20:13 +11:00
14 changed files with 66 additions and 23 deletions

View File

@@ -62,7 +62,7 @@ export const GenericErrorLayout = ({
const team = useOptionalCurrentTeam(); const team = useOptionalCurrentTeam();
const { subHeading, heading, message } = const { subHeading, heading, message } =
errorCodeMap[errorCode || 404] ?? defaultErrorCodeMap[500]; errorCodeMap[errorCode || 500] ?? defaultErrorCodeMap[500];
return ( return (
<div className="fixed inset-0 z-0 flex h-screen w-screen items-center justify-center"> <div className="fixed inset-0 z-0 flex h-screen w-screen items-center justify-center">

View File

@@ -1,7 +1,6 @@
import { useEffect } from 'react'; import { useEffect } from 'react';
import Plausible from 'plausible-tracker'; import Plausible from 'plausible-tracker';
import posthog from 'posthog-js';
import { import {
Links, Links,
Meta, Meta,
@@ -181,7 +180,6 @@ export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {
if (errorCode !== 404) { if (errorCode !== 404) {
console.error('[RootErrorBoundary]', error); console.error('[RootErrorBoundary]', error);
posthog.captureException(error);
} }
return <GenericErrorLayout errorCode={errorCode} />; return <GenericErrorLayout errorCode={errorCode} />;

View File

@@ -19,18 +19,29 @@ const posthogProxy = async (request: Request) => {
const headers = new Headers(request.headers); const headers = new Headers(request.headers);
headers.set('host', hostname); headers.set('host', hostname);
const response = await fetch(newUrl, { const fetchOptions: RequestInit = {
method: request.method, method: request.method,
headers, headers,
body: request.body, redirect: 'follow',
// @ts-expect-error - Not really sure about this };
duplex: 'half',
}); if (!['GET', 'HEAD'].includes(request.method)) {
fetchOptions.body = request.body;
fetchOptions.duplex = 'half';
}
const response = await fetch(newUrl, fetchOptions);
const responseHeaders = new Headers(response.headers);
responseHeaders.delete('content-encoding');
responseHeaders.delete('content-length');
responseHeaders.delete('transfer-encoding');
responseHeaders.delete('cookie');
return new Response(response.body, { return new Response(response.body, {
status: response.status, status: response.status,
statusText: response.statusText, statusText: response.statusText,
headers: response.headers, headers: responseHeaders,
}); });
}; };

View File

@@ -1,4 +1,4 @@
import { fetchRequestHandler } from '@ts-rest/serverless/fetch'; import { TsRestHttpError, fetchRequestHandler } from '@ts-rest/serverless/fetch';
import { Hono } from 'hono'; import { Hono } from 'hono';
import { ApiContractV1 } from '@documenso/api/v1/contract'; import { ApiContractV1 } from '@documenso/api/v1/contract';
@@ -29,6 +29,12 @@ tsRestHonoApp.mount('/', async (request) => {
request, request,
contract: ApiContractV1, contract: ApiContractV1,
router: ApiContractV1Implementation, router: ApiContractV1Implementation,
options: {}, options: {
errorHandler: (err) => {
if (err instanceof TsRestHttpError && err.statusCode === 500) {
console.error(err);
}
},
},
}); });
}); });

View File

@@ -2804,6 +2804,8 @@ msgid "Field format"
msgstr "Feldformat" msgstr "Feldformat"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Field label" msgid "Field label"
msgstr "Feldbeschriftung" msgstr "Feldbeschriftung"
@@ -3171,8 +3173,10 @@ msgid "Join {teamName} on Documenso"
msgstr "Tritt {teamName} auf Documenso bei" msgstr "Tritt {teamName} auf Documenso bei"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Label" msgid "Label"
msgstr "Beschriftung" msgstr "Beschriftung"

View File

@@ -2799,6 +2799,8 @@ msgid "Field format"
msgstr "Field format" msgstr "Field format"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Field label" msgid "Field label"
msgstr "Field label" msgstr "Field label"
@@ -3166,8 +3168,10 @@ msgid "Join {teamName} on Documenso"
msgstr "Join {teamName} on Documenso" msgstr "Join {teamName} on Documenso"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Label" msgid "Label"
msgstr "Label" msgstr "Label"

View File

@@ -2804,6 +2804,8 @@ msgid "Field format"
msgstr "Formato de campo" msgstr "Formato de campo"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Field label" msgid "Field label"
msgstr "Etiqueta de campo" msgstr "Etiqueta de campo"
@@ -3171,8 +3173,10 @@ msgid "Join {teamName} on Documenso"
msgstr "Únete a {teamName} en Documenso" msgstr "Únete a {teamName} en Documenso"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Label" msgid "Label"
msgstr "Etiqueta" msgstr "Etiqueta"

View File

@@ -2804,6 +2804,8 @@ msgid "Field format"
msgstr "Format du champ" msgstr "Format du champ"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Field label" msgid "Field label"
msgstr "Étiquette du champ" msgstr "Étiquette du champ"
@@ -3171,8 +3173,10 @@ msgid "Join {teamName} on Documenso"
msgstr "Rejoindre {teamName} sur Documenso" msgstr "Rejoindre {teamName} sur Documenso"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Label" msgid "Label"
msgstr "Étiquette" msgstr "Étiquette"

View File

@@ -2804,6 +2804,8 @@ msgid "Field format"
msgstr "Formato del campo" msgstr "Formato del campo"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Field label" msgid "Field label"
msgstr "Etichetta del campo" msgstr "Etichetta del campo"
@@ -3171,8 +3173,10 @@ msgid "Join {teamName} on Documenso"
msgstr "Unisci a {teamName} su Documenso" msgstr "Unisci a {teamName} su Documenso"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Label" msgid "Label"
msgstr "Etichetta" msgstr "Etichetta"

View File

@@ -2804,6 +2804,8 @@ msgid "Field format"
msgstr "Format pola" msgstr "Format pola"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Field label" msgid "Field label"
msgstr "Etykieta pola" msgstr "Etykieta pola"
@@ -3171,8 +3173,10 @@ msgid "Join {teamName} on Documenso"
msgstr "Dołącz do {teamName} na Documenso" msgstr "Dołącz do {teamName} na Documenso"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx
msgid "Label" msgid "Label"
msgstr "Etykieta" msgstr "Etykieta"

View File

@@ -11,10 +11,11 @@ generator json {
} }
generator zod { generator zod {
provider = "zod-prisma-types" provider = "zod-prisma-types"
createInputTypes = false createInputTypes = false
writeBarrelFiles = false writeBarrelFiles = false
useMultipleFiles = true useMultipleFiles = true
useDefaultValidators = false
} }
datasource db { datasource db {

View File

@@ -3,9 +3,8 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { msg } from '@lingui/core/macro'; import { msg } from '@lingui/core/macro';
import { useLingui } from '@lingui/react'; import { useLingui } from '@lingui/react';
import { Trans } from '@lingui/react/macro'; import { Trans } from '@lingui/react/macro';
import { Prisma } from '@prisma/client';
import type { Field, Recipient } from '@prisma/client'; import type { Field, Recipient } from '@prisma/client';
import { FieldType, RecipientRole, SendStatus } from '@prisma/client'; import { FieldType, Prisma, RecipientRole, SendStatus } from '@prisma/client';
import { import {
CalendarDays, CalendarDays,
Check, Check,
@@ -430,6 +429,7 @@ export const AddFieldsFormPartial = ({
const newField: TAddFieldsFormSchema['fields'][0] = { const newField: TAddFieldsFormSchema['fields'][0] = {
...structuredClone(lastActiveField), ...structuredClone(lastActiveField),
nativeId: undefined,
formId: nanoid(12), formId: nanoid(12),
signerEmail: selectedSigner?.email ?? lastActiveField.signerEmail, signerEmail: selectedSigner?.email ?? lastActiveField.signerEmail,
pageX: lastActiveField.pageX + 3, pageX: lastActiveField.pageX + 3,
@@ -451,6 +451,7 @@ export const AddFieldsFormPartial = ({
append({ append({
...copiedField, ...copiedField,
nativeId: undefined,
formId: nanoid(12), formId: nanoid(12),
signerEmail: selectedSigner?.email ?? copiedField.signerEmail, signerEmail: selectedSigner?.email ?? copiedField.signerEmail,
pageX: copiedField.pageX + 3, pageX: copiedField.pageX + 3,
@@ -649,6 +650,8 @@ export const AddFieldsFormPartial = ({
passive={isFieldWithinBounds && !!selectedField} passive={isFieldWithinBounds && !!selectedField}
onFocus={() => setLastActiveField(field)} onFocus={() => setLastActiveField(field)}
onBlur={() => setLastActiveField(null)} onBlur={() => setLastActiveField(null)}
onMouseEnter={() => setLastActiveField(field)}
onMouseLeave={() => setLastActiveField(null)}
onResize={(options) => onFieldResize(options, index)} onResize={(options) => onFieldResize(options, index)}
onMove={(options) => onFieldMove(options, index)} onMove={(options) => onFieldMove(options, index)}
onRemove={() => remove(index)} onRemove={() => remove(index)}

View File

@@ -34,6 +34,8 @@ export type FieldItemProps = {
onAdvancedSettings?: () => void; onAdvancedSettings?: () => void;
onFocus?: () => void; onFocus?: () => void;
onBlur?: () => void; onBlur?: () => void;
onMouseEnter?: () => void;
onMouseLeave?: () => void;
recipientIndex?: number; recipientIndex?: number;
hideRecipients?: boolean; hideRecipients?: boolean;
hasErrors?: boolean; hasErrors?: boolean;
@@ -227,6 +229,8 @@ export const FieldItem = ({
bounds={`${PDF_VIEWER_PAGE_SELECTOR}[data-page-number="${field.pageNumber}"]`} bounds={`${PDF_VIEWER_PAGE_SELECTOR}[data-page-number="${field.pageNumber}"]`}
onDragStart={() => onFieldActivate?.()} onDragStart={() => onFieldActivate?.()}
onResizeStart={() => onFieldActivate?.()} onResizeStart={() => onFieldActivate?.()}
onMouseEnter={() => onFocus?.()}
onMouseLeave={() => onBlur?.()}
enableResizing={!fixedSize} enableResizing={!fixedSize}
resizeHandleStyles={{ resizeHandleStyles={{
bottom: { bottom: -8, cursor: 'ns-resize' }, bottom: { bottom: -8, cursor: 'ns-resize' },

View File

@@ -165,6 +165,7 @@ export const AddTemplateFieldsFormPartial = ({
const newField: TAddTemplateFieldsFormSchema['fields'][0] = { const newField: TAddTemplateFieldsFormSchema['fields'][0] = {
...structuredClone(lastActiveField), ...structuredClone(lastActiveField),
formId: nanoid(12), formId: nanoid(12),
nativeId: undefined,
signerEmail: selectedSigner?.email ?? lastActiveField.signerEmail, signerEmail: selectedSigner?.email ?? lastActiveField.signerEmail,
signerId: selectedSigner?.id ?? lastActiveField.signerId, signerId: selectedSigner?.id ?? lastActiveField.signerId,
signerToken: selectedSigner?.token ?? lastActiveField.signerToken, signerToken: selectedSigner?.token ?? lastActiveField.signerToken,
@@ -195,6 +196,7 @@ export const AddTemplateFieldsFormPartial = ({
append({ append({
...copiedField, ...copiedField,
formId: nanoid(12), formId: nanoid(12),
nativeId: undefined,
signerEmail: selectedSigner?.email ?? copiedField.signerEmail, signerEmail: selectedSigner?.email ?? copiedField.signerEmail,
signerId: selectedSigner?.id ?? copiedField.signerId, signerId: selectedSigner?.id ?? copiedField.signerId,
signerToken: selectedSigner?.token ?? copiedField.signerToken, signerToken: selectedSigner?.token ?? copiedField.signerToken,
@@ -483,12 +485,6 @@ export const AddTemplateFieldsFormPartial = ({
form.setValue('fields', updatedFields); form.setValue('fields', updatedFields);
}; };
const isTypedSignatureEnabled = form.watch('typedSignatureEnabled');
const handleTypedSignatureChange = (value: boolean) => {
form.setValue('typedSignatureEnabled', value, { shouldDirty: true });
};
return ( return (
<> <>
{showAdvancedSettings && currentField ? ( {showAdvancedSettings && currentField ? (