Skip to content

Commit b607145

Browse files
authored
Merge pull request #396 from bakaphp/create-msg-file
feat: create Message with file
2 parents 7b6c4b9 + 7a0c0d3 commit b607145

File tree

3 files changed

+86
-3
lines changed

3 files changed

+86
-3
lines changed

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.29.2",
2+
"version": "0.30.0",
33
"license": "MIT",
44
"main": "dist/index.js",
55
"typings": "dist/index.d.ts",

Diff for: src/modules/messages/index.ts

+39-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export class Messages {
6262

6363
this.axiosClient.interceptors.request.use(
6464
this.options.authAxiosMiddleware,
65-
function (error: any) {
65+
function(error: any) {
6666
return Promise.reject(error);
6767
}
6868
);
@@ -79,6 +79,44 @@ export class Messages {
7979
return (await response).data.createMessage as MessagesInterface;
8080
}
8181

82+
public async createMessageWithFile(file: File, input: any): Promise<any> {
83+
if (!this.options || !this.axiosClient)
84+
throw new Error('FileSystem module not initialized');
85+
86+
const formData = new FormData();
87+
88+
formData.append(
89+
'operations',
90+
JSON.stringify({
91+
query: `
92+
mutation ($file: Upload!, $input: CreateMessageInput!) {
93+
createMessage(input: $input) {
94+
id
95+
message
96+
user { id }
97+
parent { id }
98+
messageType { id }
99+
reactions_count
100+
tags { data { name } }
101+
files { data { id, uuid, name, url } }
102+
}
103+
}
104+
`,
105+
variables: {
106+
file: null,
107+
input,
108+
},
109+
})
110+
);
111+
112+
formData.append('map', JSON.stringify({ '0': ['variables.file'] }));
113+
formData.append('0', file, file.name);
114+
115+
const response = await this.axiosClient.post('', formData);
116+
117+
return response.data.data.createMessage;
118+
}
119+
82120
public async updateMessage(
83121
id: string,
84122
input: MessageUpdateInputInterface
@@ -307,7 +345,6 @@ export class Messages {
307345
return response.data.messages as MessagesInterface;
308346
}
309347

310-
311348
public async getMessagesLikedByUser(
312349
userId: number,
313350
options: {

Diff for: src/mutations/messages.mutation.ts

+46
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,52 @@ export const CREATE_MESSAGE_MUTATION = gql`
3232
}
3333
`;
3434

35+
export const CREATE_MESSAGE_MUTATION_V2 = gql`
36+
mutation($file: Upload!) {
37+
createMessage(
38+
input: {
39+
message_verb: "EXE"
40+
message: {
41+
name: "John Doe"
42+
for_review: true
43+
is_reviewed: false
44+
text: "Sample message text"
45+
}
46+
entity_id: "550e8400-e29b-41d4-a716-446655440000"
47+
tags: [{ name: "test" }, { name: "test2" }]
48+
is_public: 1
49+
files: [$file]
50+
}
51+
) {
52+
id
53+
message
54+
user {
55+
id
56+
}
57+
parent {
58+
id
59+
}
60+
messageType {
61+
id
62+
}
63+
reactions_count
64+
tags {
65+
data {
66+
name
67+
}
68+
}
69+
files {
70+
data {
71+
id
72+
uuid
73+
name
74+
url
75+
}
76+
}
77+
}
78+
}
79+
`;
80+
3581
export const UPDATE_MESSAGE_MUTATION = gql`
3682
mutation updateMessage($id: ID!, $input: MessageUpdateInput!) {
3783
updateMessage(id: $id, input: $input) {

0 commit comments

Comments
 (0)