2
0

page-delete-config.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {
  2. PageDeleteConfigValue as Value, IPageDeleteConfigValueToProcessValidation,
  3. IPageDeleteConfigValue,
  4. } from '~/interfaces/page-delete-config';
  5. /**
  6. * Return true if "configForRecursive" is stronger than "configForSingle"
  7. * Strength: "Admin" > "Admin and author" > "Anyone"
  8. * @param configForSingle IPageDeleteConfigValueToProcessValidation
  9. * @param configForRecursive IPageDeleteConfigValueToProcessValidation
  10. * @returns boolean
  11. */
  12. export const validateDeleteConfigs = (
  13. configForSingle: IPageDeleteConfigValueToProcessValidation, configForRecursive: IPageDeleteConfigValueToProcessValidation,
  14. ): boolean => {
  15. if (configForSingle === Value.Anyone) {
  16. switch (configForRecursive) {
  17. case Value.Anyone:
  18. case Value.AdminAndAuthor:
  19. case Value.AdminOnly:
  20. return true;
  21. }
  22. }
  23. if (configForSingle === Value.AdminAndAuthor) {
  24. switch (configForRecursive) {
  25. case Value.Anyone:
  26. return false;
  27. case Value.AdminAndAuthor:
  28. case Value.AdminOnly:
  29. return true;
  30. }
  31. }
  32. if (configForSingle === Value.AdminOnly) {
  33. switch (configForRecursive) {
  34. case Value.Anyone:
  35. case Value.AdminAndAuthor:
  36. return false;
  37. case Value.AdminOnly:
  38. return true;
  39. }
  40. }
  41. return false;
  42. };
  43. /**
  44. * Convert IPageDeleteConfigValue.Inherit to the calculable value
  45. * @param confForSingle IPageDeleteConfigValueToProcessValidation
  46. * @param confForRecursive IPageDeleteConfigValue
  47. * @returns [(value for single), (value for recursive)]
  48. */
  49. export const prepareDeleteConfigValuesForCalc = (
  50. confForSingle: IPageDeleteConfigValueToProcessValidation | undefined, confForRecursive: IPageDeleteConfigValue | undefined,
  51. ): [IPageDeleteConfigValueToProcessValidation, IPageDeleteConfigValueToProcessValidation] => {
  52. // convert undefined to default values
  53. const confForSingleToReturn = confForSingle ?? Value.Anyone;
  54. const confForRecursiveToReturn = confForRecursive ?? Value.Inherit;
  55. if (confForRecursiveToReturn === Value.Inherit) {
  56. return [confForSingleToReturn, confForSingleToReturn];
  57. }
  58. return [confForSingleToReturn, confForRecursiveToReturn];
  59. };