accessibilitySettings.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { ReactiveCache } from '/imports/reactiveCache';
  2. AccessibilitySettings = new Mongo.Collection('accessibilitySettings');
  3. AccessibilitySettings.attachSchema(
  4. new SimpleSchema({
  5. enabled: {
  6. type: Boolean,
  7. defaultValue: false,
  8. },
  9. title: {
  10. type: String,
  11. optional: true,
  12. },
  13. body: {
  14. type: String,
  15. optional: true,
  16. },
  17. createdAt: {
  18. type: Date,
  19. optional: true,
  20. // eslint-disable-next-line consistent-return
  21. autoValue() {
  22. if (this.isInsert) {
  23. return new Date();
  24. } else if (this.isUpsert) {
  25. return { $setOnInsert: new Date() };
  26. } else {
  27. this.unset();
  28. }
  29. },
  30. },
  31. modifiedAt: {
  32. type: Date,
  33. denyUpdate: false,
  34. // eslint-disable-next-line consistent-return
  35. autoValue() {
  36. if (this.isInsert || this.isUpsert || this.isUpdate) {
  37. return new Date();
  38. } else {
  39. this.unset();
  40. }
  41. },
  42. },
  43. }),
  44. );
  45. AccessibilitySettings.allow({
  46. update(userId) {
  47. const user = ReactiveCache.getUser(userId);
  48. return user && user.isAdmin;
  49. },
  50. });
  51. if (Meteor.isServer) {
  52. Meteor.startup(() => {
  53. AccessibilitySettings._collection.createIndex({ modifiedAt: -1 });
  54. const accessibilitySetting = AccessibilitySettings.findOne({});
  55. if (!accessibilitySetting) {
  56. AccessibilitySettings.insert({ enabled: false, sort: 0 });
  57. }
  58. });
  59. }
  60. export default AccessibilitySettings;