AdminAppContainer.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. import { Container } from 'unstated';
  2. /**
  3. * Service container for admin app setting page (AppSettings.jsx)
  4. * @extends {Container} unstated Container
  5. */
  6. export default class AdminAppContainer extends Container {
  7. constructor(appContainer) {
  8. super();
  9. this.appContainer = appContainer;
  10. this.dummyTitle = 0;
  11. this.dummyTitleForError = 1;
  12. this.state = {
  13. retrieveError: null,
  14. // set dummy value tile for using suspense
  15. title: this.dummyTitle,
  16. confidential: '',
  17. globalLang: '',
  18. fileUpload: '',
  19. siteUrl: '',
  20. envSiteUrl: '',
  21. isSetSiteUrl: true,
  22. fromAddress: '',
  23. smtpHost: '',
  24. smtpPort: '',
  25. smtpUser: '',
  26. smtpPassword: '',
  27. sesAccessKeyId: '',
  28. sesSecretAccessKey: '',
  29. region: '',
  30. customEndpoint: '',
  31. bucket: '',
  32. accessKeyId: '',
  33. secretAccessKey: '',
  34. isEnabledPlugins: true,
  35. };
  36. }
  37. /**
  38. * Workaround for the mangling in production build to break constructor.name
  39. */
  40. static getClassName() {
  41. return 'AdminAppContainer';
  42. }
  43. /**
  44. * retrieve app sttings data
  45. */
  46. async retrieveAppSettingsData() {
  47. const response = await this.appContainer.apiv3.get('/app-settings/');
  48. const { appSettingsParams } = response.data;
  49. this.setState({
  50. title: appSettingsParams.title,
  51. confidential: appSettingsParams.confidential,
  52. globalLang: appSettingsParams.globalLang,
  53. fileUpload: appSettingsParams.fileUpload,
  54. siteUrl: appSettingsParams.siteUrl,
  55. envSiteUrl: appSettingsParams.envSiteUrl,
  56. isSetSiteUrl: !!appSettingsParams.siteUrl,
  57. fromAddress: appSettingsParams.fromAddress,
  58. smtpHost: appSettingsParams.smtpHost,
  59. smtpPort: appSettingsParams.smtpPort,
  60. smtpUser: appSettingsParams.smtpUser,
  61. smtpPassword: appSettingsParams.smtpPassword,
  62. sesAccessKeyId: appSettingsParams.sesAccessKeyId,
  63. sesSecretAccessKey: appSettingsParams.sesSecretAccessKey,
  64. region: appSettingsParams.region,
  65. customEndpoint: appSettingsParams.customEndpoint,
  66. bucket: appSettingsParams.bucket,
  67. accessKeyId: appSettingsParams.accessKeyId,
  68. secretAccessKey: appSettingsParams.secretAccessKey,
  69. isEnabledPlugins: appSettingsParams.isEnabledPlugins,
  70. });
  71. }
  72. /**
  73. * Change title
  74. */
  75. changeTitle(title) {
  76. this.setState({ title });
  77. }
  78. /**
  79. * Change confidential
  80. */
  81. changeConfidential(confidential) {
  82. this.setState({ confidential });
  83. }
  84. /**
  85. * Change globalLang
  86. */
  87. changeGlobalLang(globalLang) {
  88. this.setState({ globalLang });
  89. }
  90. /**
  91. * Change fileUpload
  92. */
  93. changeFileUpload(fileUpload) {
  94. this.setState({ fileUpload });
  95. }
  96. /**
  97. * Change site url
  98. */
  99. changeSiteUrl(siteUrl) {
  100. this.setState({ siteUrl });
  101. }
  102. /**
  103. * Change from address
  104. */
  105. changeFromAddress(fromAddress) {
  106. this.setState({ fromAddress });
  107. }
  108. /**
  109. * Change smtp host
  110. */
  111. changeSmtpHost(smtpHost) {
  112. this.setState({ smtpHost });
  113. }
  114. /**
  115. * Change smtp port
  116. */
  117. changeSmtpPort(smtpPort) {
  118. this.setState({ smtpPort });
  119. }
  120. /**
  121. * Change smtp user
  122. */
  123. changeSmtpUser(smtpUser) {
  124. this.setState({ smtpUser });
  125. }
  126. /**
  127. * Change smtp password
  128. */
  129. changeSmtpPassword(smtpPassword) {
  130. this.setState({ smtpPassword });
  131. }
  132. /**
  133. * Change sesAccessKeyId
  134. */
  135. changeSesAccessKeyId(sesAccessKeyId) {
  136. this.setState({ sesAccessKeyId });
  137. }
  138. /**
  139. * Change sesSecretAccessKey
  140. */
  141. changeSesSecretAccessKey(sesSecretAccessKey) {
  142. this.setState({ sesSecretAccessKey });
  143. }
  144. /**
  145. * Change region
  146. */
  147. changeRegion(region) {
  148. this.setState({ region });
  149. }
  150. /**
  151. * Change custom endpoint
  152. */
  153. changeCustomEndpoint(customEndpoint) {
  154. this.setState({ customEndpoint });
  155. }
  156. /**
  157. * Change bucket name
  158. */
  159. changeBucket(bucket) {
  160. this.setState({ bucket });
  161. }
  162. /**
  163. * Change access key id
  164. */
  165. changeAccessKeyId(accessKeyId) {
  166. this.setState({ accessKeyId });
  167. }
  168. /**
  169. * Change secret access key
  170. */
  171. changeSecretAccessKey(secretAccessKey) {
  172. this.setState({ secretAccessKey });
  173. }
  174. /**
  175. * Change secret key
  176. */
  177. changeIsEnabledPlugins(isEnabledPlugins) {
  178. this.setState({ isEnabledPlugins });
  179. }
  180. /**
  181. * Update app setting
  182. * @memberOf AdminAppContainer
  183. * @return {Array} Appearance
  184. */
  185. async updateAppSettingHandler() {
  186. const response = await this.appContainer.apiv3.put('/app-settings/app-setting', {
  187. title: this.state.title,
  188. confidential: this.state.confidential,
  189. globalLang: this.state.globalLang,
  190. fileUpload: this.state.fileUpload,
  191. });
  192. const { appSettingParams } = response.data;
  193. return appSettingParams;
  194. }
  195. /**
  196. * Update site url setting
  197. * @memberOf AdminAppContainer
  198. * @return {Array} Appearance
  199. */
  200. async updateSiteUrlSettingHandler() {
  201. const response = await this.appContainer.apiv3.put('/app-settings/site-url-setting', {
  202. siteUrl: this.state.siteUrl,
  203. });
  204. const { siteUrlSettingParams } = response.data;
  205. return siteUrlSettingParams;
  206. }
  207. /**
  208. * Update from adress
  209. * @memberOf AdminAppContainer
  210. * @return {Array} Appearance
  211. */
  212. async updateFromAdressHandler() {
  213. const response = await this.appContainer.apiv3.put('/app-settings/from-address', {
  214. fromAddress: this.state.fromAddress,
  215. });
  216. const { mailSettingParams } = response.data;
  217. return mailSettingParams;
  218. }
  219. /**
  220. * Update smtp setting
  221. * @memberOf AdminAppContainer
  222. * @return {Array} Appearance
  223. */
  224. async updateSmtpSettingHandler() {
  225. const response = await this.appContainer.apiv3.put('/app-settings/smtp-setting', {
  226. smtpHost: this.state.smtpHost,
  227. smtpPort: this.state.smtpPort,
  228. smtpUser: this.state.smtpUser,
  229. smtpPassword: this.state.smtpPassword,
  230. });
  231. const { mailSettingParams } = response.data;
  232. return mailSettingParams;
  233. }
  234. /**
  235. * Update ses setting
  236. * @memberOf AdminAppContainer
  237. * @return {Array} Appearance
  238. */
  239. async updateSesSettingHandler() {
  240. const response = await this.appContainer.apiv3.put('/app-settings/ses-setting', {
  241. sesAccessKeyId: this.state.sesAccessKeyId,
  242. sesSecretAccessKey: this.state.sesSecretAccessKey,
  243. });
  244. const { mailSettingParams } = response.data;
  245. return mailSettingParams;
  246. }
  247. /**
  248. * Update AWS setting
  249. * @memberOf AdminAppContainer
  250. * @return {Array} Appearance
  251. */
  252. async updateAwsSettingHandler() {
  253. const response = await this.appContainer.apiv3.put('/app-settings/aws-setting', {
  254. region: this.state.region,
  255. customEndpoint: this.state.customEndpoint,
  256. bucket: this.state.bucket,
  257. accessKeyId: this.state.accessKeyId,
  258. secretAccessKey: this.state.secretAccessKey,
  259. });
  260. const { awsSettingParams } = response.data;
  261. return awsSettingParams;
  262. }
  263. /**
  264. * Update plugin setting
  265. * @memberOf AdminAppContainer
  266. * @return {Array} Appearance
  267. */
  268. async updatePluginSettingHandler() {
  269. const response = await this.appContainer.apiv3.put('/app-settings/plugin-setting', {
  270. isEnabledPlugins: this.state.isEnabledPlugins,
  271. });
  272. const { pluginSettingParams } = response.data;
  273. return pluginSettingParams;
  274. }
  275. }