1234567891011121314151617181920212223242526272829303132333435 |
- import { ReactiveCache } from '/imports/reactiveCache';
- Meteor.methods({
- watch(watchableType, id, level) {
- check(watchableType, String);
- check(id, String);
- check(level, Match.OneOf(String, null));
- const userId = Meteor.userId();
- let watchableObj = null;
- let board = null;
- if (watchableType === 'board') {
- watchableObj = ReactiveCache.getBoard(id);
- if (!watchableObj) throw new Meteor.Error('error-board-doesNotExist');
- board = watchableObj;
- } else if (watchableType === 'list') {
- watchableObj = ReactiveCache.getList(id);
- if (!watchableObj) throw new Meteor.Error('error-list-doesNotExist');
- board = watchableObj.board();
- } else if (watchableType === 'card') {
- watchableObj = ReactiveCache.getCard(id);
- if (!watchableObj) throw new Meteor.Error('error-card-doesNotExist');
- board = watchableObj.board();
- } else {
- throw new Meteor.Error('error-json-schema');
- }
- if (board.permission === 'private' && !board.hasMember(userId))
- throw new Meteor.Error('error-board-notAMember');
- watchableObj.setWatcher(userId, level);
- return true;
- },
- });
|