/ src / api / new-discussion.ts
new-discussion.ts
 1  import { RequestFN } from "~/core/request-function";
 2  import { EntityState, NewDiscussionRecipient, SessionHandle, TabLocation } from "~/models";
 3  import { apiProperties } from "./private/api-properties";
 4  
 5  /**
 6   * Create a discussion.
 7   *
 8   * Sadly, we can't get the ID of the created discussion
 9   * or anything else related to it, you need to request the
10   * discussions list once again.
11  */
12  export const newDiscussion = async (
13    session: SessionHandle,
14    subject: string,
15    content: string,
16    recipients: Array<NewDiscussionRecipient>
17  ): Promise<void> => {
18    const properties = apiProperties(session);
19    const request = new RequestFN(session, "SaisieMessage", {
20      [properties.signature]: { onglet: TabLocation.Discussions },
21  
22      [properties.data]: {
23        contenu: session.user.authorizations.hasAdvancedDiscussionEditor ? {
24          _T: 21,
25          V: content
26        } : content,
27  
28        objet: subject,
29        estCreationCarnetLiaison: false,
30        listeFichiers: [],
31        listeDestinataires: recipients.map((recipient) => ({
32          E: EntityState.MODIFICATION,
33          G: recipient.kind,
34          N: recipient.id
35        }))
36      }
37    });
38  
39    await request.send();
40  };