1- import type { IMessage } from '@rocket.chat/core-typings' ;
1+ import type { IMessage , ISupportedLanguage } from '@rocket.chat/core-typings' ;
22import { Messages } from '@rocket.chat/models' ;
33import {
44 ajv ,
@@ -15,14 +15,51 @@ import { settings } from '../../../settings/server';
1515import type { ExtractRoutesFromAPI } from '../ApiClass' ;
1616import { API } from '../api' ;
1717
18- API . v1 . addRoute (
19- 'autotranslate.getSupportedLanguages' ,
20- {
21- authRequired : true ,
22- validateParams : isAutotranslateGetSupportedLanguagesParamsGET ,
18+ type AutotranslateTranslateMessageParamsPOST = {
19+ messageId : string ;
20+ targetLanguage ?: string ;
21+ } ;
22+
23+ const AutotranslateTranslateMessageParamsPostSchema = {
24+ type : 'object' ,
25+ properties : {
26+ messageId : {
27+ type : 'string' ,
28+ } ,
29+ targetLanguage : {
30+ type : 'string' ,
31+ nullable : true ,
32+ } ,
2333 } ,
24- {
25- async get ( ) {
34+ required : [ 'messageId' ] ,
35+ additionalProperties : false ,
36+ } ;
37+
38+ const isAutotranslateTranslateMessageParamsPOST = ajv . compile < AutotranslateTranslateMessageParamsPOST > (
39+ AutotranslateTranslateMessageParamsPostSchema ,
40+ ) ;
41+
42+ const autotranslateEndpoints = API . v1
43+ . get (
44+ 'autotranslate.getSupportedLanguages' ,
45+ {
46+ authRequired : true ,
47+ query : isAutotranslateGetSupportedLanguagesParamsGET ,
48+ response : {
49+ 200 : ajv . compile < { languages : ISupportedLanguage [ ] } > ( {
50+ type : 'object' ,
51+ properties : {
52+ languages : { type : 'array' , items : { type : 'object' } } ,
53+ success : { type : 'boolean' , enum : [ true ] } ,
54+ } ,
55+ required : [ 'languages' , 'success' ] ,
56+ additionalProperties : false ,
57+ } ) ,
58+ 400 : validateBadRequestErrorResponse ,
59+ 401 : validateUnauthorizedErrorResponse ,
60+ } ,
61+ } ,
62+ async function action ( ) {
2663 if ( ! settings . get ( 'AutoTranslate_Enabled' ) ) {
2764 return API . v1 . failure ( 'AutoTranslate is disabled.' ) ;
2865 }
@@ -31,17 +68,24 @@ API.v1.addRoute(
3168
3269 return API . v1 . success ( { languages : languages || [ ] } ) ;
3370 } ,
34- } ,
35- ) ;
36-
37- API . v1 . addRoute (
38- 'autotranslate.saveSettings' ,
39- {
40- authRequired : true ,
41- validateParams : isAutotranslateSaveSettingsParamsPOST ,
42- } ,
43- {
44- async post ( ) {
71+ )
72+ . post (
73+ 'autotranslate.saveSettings' ,
74+ {
75+ authRequired : true ,
76+ body : isAutotranslateSaveSettingsParamsPOST ,
77+ response : {
78+ 200 : ajv . compile < void > ( {
79+ type : 'object' ,
80+ properties : { success : { type : 'boolean' , enum : [ true ] } } ,
81+ required : [ 'success' ] ,
82+ additionalProperties : false ,
83+ } ) ,
84+ 400 : validateBadRequestErrorResponse ,
85+ 401 : validateUnauthorizedErrorResponse ,
86+ } ,
87+ } ,
88+ async function action ( ) {
4589 const { roomId, field, value, defaultLanguage } = this . bodyParams ;
4690 if ( ! settings . get ( 'AutoTranslate_Enabled' ) ) {
4791 return API . v1 . failure ( 'AutoTranslate is disabled.' ) ;
@@ -70,74 +114,48 @@ API.v1.addRoute(
70114
71115 return API . v1 . success ( ) ;
72116 } ,
73- } ,
74- ) ;
75-
76- type AutotranslateTranslateMessageParamsPOST = {
77- messageId : string ;
78- targetLanguage ?: string ;
79- } ;
80-
81- const AutotranslateTranslateMessageParamsPostSchema = {
82- type : 'object' ,
83- properties : {
84- messageId : {
85- type : 'string' ,
86- } ,
87- targetLanguage : {
88- type : 'string' ,
89- nullable : true ,
117+ )
118+ . post (
119+ 'autotranslate.translateMessage' ,
120+ {
121+ authRequired : true ,
122+ body : isAutotranslateTranslateMessageParamsPOST ,
123+ response : {
124+ 200 : ajv . compile < { message : IMessage } > ( {
125+ type : 'object' ,
126+ properties : {
127+ message : { $ref : '#/components/schemas/IMessage' } ,
128+ success : { type : 'boolean' , enum : [ true ] } ,
129+ } ,
130+ required : [ 'message' , 'success' ] ,
131+ additionalProperties : false ,
132+ } ) ,
133+ 400 : validateBadRequestErrorResponse ,
134+ 401 : validateUnauthorizedErrorResponse ,
135+ } ,
90136 } ,
91- } ,
92- required : [ 'messageId' ] ,
93- additionalProperties : false ,
94- } ;
95-
96- const isAutotranslateTranslateMessageParamsPOST = ajv . compile < AutotranslateTranslateMessageParamsPOST > (
97- AutotranslateTranslateMessageParamsPostSchema ,
98- ) ;
99-
100- const autotranslateEndpoints = API . v1 . post (
101- 'autotranslate.translateMessage' ,
102- {
103- authRequired : true ,
104- body : isAutotranslateTranslateMessageParamsPOST ,
105- response : {
106- 200 : ajv . compile < { message : IMessage } > ( {
107- type : 'object' ,
108- properties : {
109- message : { $ref : '#/components/schemas/IMessage' } ,
110- success : { type : 'boolean' , enum : [ true ] } ,
111- } ,
112- required : [ 'message' , 'success' ] ,
113- additionalProperties : false ,
114- } ) ,
115- 400 : validateBadRequestErrorResponse ,
116- 401 : validateUnauthorizedErrorResponse ,
117- } ,
118- } ,
119- async function action ( ) {
120- const { messageId, targetLanguage } = this . bodyParams ;
121- if ( ! settings . get ( 'AutoTranslate_Enabled' ) ) {
122- return API . v1 . failure ( 'AutoTranslate is disabled.' ) ;
123- }
124- if ( ! messageId ) {
125- return API . v1 . failure ( 'The bodyParam "messageId" is required.' ) ;
126- }
127- const message = await Messages . findOneById ( messageId ) ;
128- if ( ! message ) {
129- return API . v1 . failure ( 'Message not found.' ) ;
130- }
137+ async function action ( ) {
138+ const { messageId, targetLanguage } = this . bodyParams ;
139+ if ( ! settings . get ( 'AutoTranslate_Enabled' ) ) {
140+ return API . v1 . failure ( 'AutoTranslate is disabled.' ) ;
141+ }
142+ if ( ! messageId ) {
143+ return API . v1 . failure ( 'The bodyParam "messageId" is required.' ) ;
144+ }
145+ const message = await Messages . findOneById ( messageId ) ;
146+ if ( ! message ) {
147+ return API . v1 . failure ( 'Message not found.' ) ;
148+ }
131149
132- const translatedMessage = await translateMessage ( targetLanguage , message ) ;
150+ const translatedMessage = await translateMessage ( targetLanguage , message ) ;
133151
134- if ( ! translatedMessage ) {
135- return API . v1 . failure ( 'Failed to translate message.' ) ;
136- }
152+ if ( ! translatedMessage ) {
153+ return API . v1 . failure ( 'Failed to translate message.' ) ;
154+ }
137155
138- return API . v1 . success ( { message : translatedMessage } ) ;
139- } ,
140- ) ;
156+ return API . v1 . success ( { message : translatedMessage } ) ;
157+ } ,
158+ ) ;
141159
142160type AutotranslateEndpoints = ExtractRoutesFromAPI < typeof autotranslateEndpoints > ;
143161
0 commit comments