page-delete-config.ts 2.2 KB

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