AdminHomeContainer.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { Container } from 'unstated';
  2. import loggerFactory from '@alias/logger';
  3. import { toastError } from '../util/apiNotification';
  4. // eslint-disable-next-line no-unused-vars
  5. const logger = loggerFactory('growi:services:AdminHomeContainer');
  6. /**
  7. * Service container for admin home page (AdminHome.jsx)
  8. * @extends {Container} unstated Container
  9. */
  10. export default class AdminHomeContainer extends Container {
  11. constructor(appContainer) {
  12. super();
  13. this.appContainer = appContainer;
  14. this.state = {
  15. retrieveError: null,
  16. growiVersion: '',
  17. nodeVersion: '',
  18. npmVersion: '',
  19. yarnVersion: '',
  20. installedPlugins: [],
  21. envVars: {},
  22. };
  23. }
  24. /**
  25. * Workaround for the mangling in production build to break constructor.name
  26. */
  27. static getClassName() {
  28. return 'AdminHomeContainer';
  29. }
  30. /**
  31. * retrieve admin home data
  32. */
  33. async retrieveAdminHomeData() {
  34. try {
  35. const response = await this.appContainer.apiv3.get('/admin-home/');
  36. const { adminHomeParams } = response.data;
  37. this.setState({
  38. growiVersion: adminHomeParams.growiVersion,
  39. nodeVersion: adminHomeParams.nodeVersion,
  40. npmVersion: adminHomeParams.npmVersion,
  41. yarnVersion: adminHomeParams.yarnVersion,
  42. installedPlugins: adminHomeParams.installedPlugins,
  43. envVars: adminHomeParams.envVars,
  44. });
  45. }
  46. catch (err) {
  47. logger.error(err);
  48. toastError(new Error('Failed to fetch data'));
  49. }
  50. }
  51. }