MarkDownSettingContainer.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import { Container } from 'unstated';
  2. /**
  3. * Service container for admin markdown setting page (MarkDownSetting.jsx)
  4. * @extends {Container} unstated Container
  5. */
  6. export default class MarkDownSettingContainer extends Container {
  7. constructor(appContainer) {
  8. super();
  9. this.appContainer = appContainer;
  10. this.state = {
  11. isEnabledLinebreaks: appContainer.config.isEnabledLinebreaks,
  12. isEnabledLinebreaksInComments: appContainer.config.isEnabledLinebreaksInComments,
  13. pageBreakSeparator: appContainer.config.pageBreakSeparator,
  14. pageBreakCustomSeparator: appContainer.config.pageBreakCustomSeparator || '',
  15. // pageBreakOption: appContainer.config.pageBreakOption,
  16. customRegularExpression: appContainer.config.customRegularExpression || '',
  17. isEnabledXss: (appContainer.config.xssOption != null),
  18. xssOption: appContainer.config.xssOption,
  19. tagWhiteList: appContainer.config.tagWhiteList || '',
  20. attrWhiteList: appContainer.config.attrWhiteList || '',
  21. };
  22. this.switchEnableXss = this.switchEnableXss.bind(this);
  23. }
  24. /**
  25. * Workaround for the mangling in production build to break constructor.name
  26. */
  27. static getClassName() {
  28. return 'MarkDownSettingContainer';
  29. }
  30. /**
  31. * Switch PageBreakSeparator
  32. */
  33. switchPageBreakSeparator(pageBreakSeparator) {
  34. this.setState({ pageBreakSeparator });
  35. }
  36. /**
  37. * Set PageBreakCustomSeparator
  38. */
  39. setPageBreakCustomSeparator(pageBreakCustomSeparator) {
  40. this.setState({ pageBreakCustomSeparator });
  41. }
  42. /**
  43. * Switch enableXss
  44. */
  45. switchEnableXss() {
  46. if (this.state.isEnabledXss) {
  47. this.setState({ xssOption: null });
  48. }
  49. this.setState({ isEnabledXss: !this.state.isEnabledXss });
  50. }
  51. /**
  52. * Update LineBreak Setting
  53. */
  54. async updateLineBreakSetting() {
  55. const response = await this.appContainer.apiv3.put('/markdown-setting/lineBreak', {
  56. isEnabledLinebreaks: this.state.isEnabledLinebreaks,
  57. isEnabledLinebreaksInComments: this.state.isEnabledLinebreaksInComments,
  58. });
  59. return response;
  60. }
  61. /**
  62. * Update Xss Setting
  63. */
  64. async updateXssSetting() {
  65. const response = await this.appContainer.apiv3.put('/markdown-setting/xss', {
  66. isEnabledXss: this.state.isEnabledXss,
  67. xssOption: this.state.xssOption,
  68. tagWhiteList: this.state.tagWhiteList,
  69. attrWhiteList: this.state.attrWhiteList,
  70. });
  71. return response;
  72. }
  73. /**
  74. * Update Presentation Setting
  75. */
  76. async updatePresentationSetting() {
  77. const response = await this.appContainer.apiv3.put('/markdown-setting/presentation', {
  78. pageBreakSeparator: this.state.pageBreakSeparator,
  79. pageBreakCustomSeparator: this.state.pageBreakCustomSeparator,
  80. });
  81. this.setState({
  82. pageBreakSeparator: response.data.presentationParams.pageBreakSeparator,
  83. pageBreakCustomSeparator: response.data.presentationParams.pageBreakCustomSeparator,
  84. });
  85. return response;
  86. }
  87. }