feat(conversations): swap button, year dividers, summary bar, new-doc link #43
@@ -5,10 +5,12 @@ import { parseBackendError, getErrorMessage } from '$lib/errors';
|
||||
|
||||
export async function load({
|
||||
fetch,
|
||||
locals
|
||||
locals,
|
||||
url
|
||||
}: {
|
||||
fetch: typeof globalThis.fetch;
|
||||
locals: App.Locals;
|
||||
url: URL;
|
||||
}) {
|
||||
const canWrite =
|
||||
locals.user?.groups?.some((g: { permissions: string[] }) =>
|
||||
@@ -16,14 +18,41 @@ export async function load({
|
||||
) ?? false;
|
||||
if (!canWrite) throw error(403, 'Forbidden');
|
||||
|
||||
const api = createApiClient(fetch);
|
||||
const personsResult = await api.GET('/api/persons');
|
||||
const senderId = url.searchParams.get('senderId') || '';
|
||||
const receiverId = url.searchParams.get('receiverId') || '';
|
||||
|
||||
if (!personsResult.response.ok) {
|
||||
return { persons: [] };
|
||||
const api = createApiClient(fetch);
|
||||
|
||||
let initialSenderName = '';
|
||||
let initialReceivers: { id: string; firstName: string; lastName: string }[] = [];
|
||||
|
||||
const requests: Promise<void>[] = [];
|
||||
|
||||
if (senderId) {
|
||||
requests.push(
|
||||
api.GET('/api/persons/{id}', { params: { path: { id: senderId } } }).then(({ data }) => {
|
||||
if (data) initialSenderName = `${data.firstName} ${data.lastName}`;
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
return { persons: personsResult.data };
|
||||
if (receiverId) {
|
||||
requests.push(
|
||||
api.GET('/api/persons/{id}', { params: { path: { id: receiverId } } }).then(({ data }) => {
|
||||
if (data)
|
||||
initialReceivers = [{ id: data.id!, firstName: data.firstName, lastName: data.lastName }];
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
const [personsResult] = await Promise.all([api.GET('/api/persons'), ...requests]);
|
||||
|
||||
return {
|
||||
persons: personsResult.response.ok ? personsResult.data : [],
|
||||
initialSenderId: senderId,
|
||||
initialSenderName,
|
||||
initialReceivers
|
||||
};
|
||||
}
|
||||
|
||||
export const actions = {
|
||||
|
||||
@@ -5,11 +5,13 @@ import PersonTypeahead from '$lib/components/PersonTypeahead.svelte';
|
||||
import PersonMultiSelect from '$lib/components/PersonMultiSelect.svelte';
|
||||
import { m } from '$lib/paraglide/messages.js';
|
||||
|
||||
let { form } = $props();
|
||||
let { data, form } = $props();
|
||||
|
||||
let tags: string[] = $state([]);
|
||||
let senderId = $state('');
|
||||
let selectedReceivers: { id: string; firstName: string; lastName: string }[] = $state([]);
|
||||
let senderId = $state(data.initialSenderId);
|
||||
let selectedReceivers: { id: string; firstName: string; lastName: string }[] = $state(
|
||||
data.initialReceivers
|
||||
);
|
||||
|
||||
let dateDisplay = $state('');
|
||||
let dateIso = $state('');
|
||||
@@ -120,7 +122,12 @@ function handleDateInput(e: Event) {
|
||||
|
||||
<!-- Absender -->
|
||||
<div>
|
||||
<PersonTypeahead name="senderId" label={m.form_label_sender()} bind:value={senderId} />
|
||||
<PersonTypeahead
|
||||
name="senderId"
|
||||
label={m.form_label_sender()}
|
||||
bind:value={senderId}
|
||||
initialName={data.initialSenderName}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- Empfänger -->
|
||||
|
||||
Reference in New Issue
Block a user