Fix unable to see My Due Cards.

Thanks to xet7 !

Fixes #5948
This commit is contained in:
Lauri Ojansivu 2025-10-19 20:05:36 +03:00
parent 23860b1ee8
commit 66b444e2b0
4 changed files with 321 additions and 64 deletions

View file

@ -147,13 +147,31 @@ Meteor.publish('globalSearch', function(sessionId, params, text) {
check(params, Object);
check(text, String);
// eslint-disable-next-line no-console
// console.log('queryParams:', params);
if (process.env.DEBUG === 'true') {
console.log('globalSearch publication called with:', { sessionId, params, text });
}
const ret = findCards(sessionId, buildQuery(new QueryParams(params, text)));
if (process.env.DEBUG === 'true') {
console.log('globalSearch publication returning:', ret);
}
return ret;
});
Meteor.publish('sessionData', function(sessionId) {
check(sessionId, String);
const userId = Meteor.userId();
if (process.env.DEBUG === 'true') {
console.log('sessionData publication called with:', { sessionId, userId });
}
const cursor = SessionData.find({ userId, sessionId });
if (process.env.DEBUG === 'true') {
console.log('sessionData publication returning cursor with count:', cursor.count());
}
return cursor;
});
function buildSelector(queryParams) {
const userId = Meteor.userId();
@ -261,8 +279,12 @@ function buildSelector(queryParams) {
selector.archived = false;
}
} else {
const userBoardIds = Boards.userBoardIds(userId, null, boardsSelector);
if (process.env.DEBUG === 'true') {
console.log('buildSelector - userBoardIds:', userBoardIds);
}
selector.boardId = {
$in: Boards.userBoardIds(userId, null, boardsSelector),
$in: userBoardIds,
};
}
if (endAt !== null) {
@ -537,8 +559,9 @@ function buildSelector(queryParams) {
}
}
// eslint-disable-next-line no-console
// console.log('cards selector:', JSON.stringify(selector, null, 2));
if (process.env.DEBUG === 'true') {
console.log('buildSelector - final selector:', JSON.stringify(selector, null, 2));
}
const query = new Query();
query.selector = selector;
@ -702,14 +725,17 @@ function findCards(sessionId, query) {
const userId = Meteor.userId();
// eslint-disable-next-line no-console
// console.log('selector:', query.selector);
// console.log('selector.$and:', query.selector.$and);
// eslint-disable-next-line no-console
// console.log('projection:', query.projection);
if (process.env.DEBUG === 'true') {
console.log('findCards - userId:', userId);
console.log('findCards - selector:', JSON.stringify(query.selector, null, 2));
console.log('findCards - selector.$and:', query.selector.$and);
console.log('findCards - projection:', query.projection);
}
const cards = ReactiveCache.getCards(query.selector, query.projection, true);
// eslint-disable-next-line no-console
// console.log('count:', cards.count());
if (process.env.DEBUG === 'true') {
console.log('findCards - cards count:', cards ? cards.count() : 0);
}
const update = {
$set: {
@ -720,7 +746,8 @@ function findCards(sessionId, query) {
selector: SessionData.pickle(query.selector),
projection: SessionData.pickle(query.projection),
errors: query.errors(),
debug: query.getQueryParams().getPredicate(OPERATOR_DEBUG)
debug: query.getQueryParams().getPredicate(OPERATOR_DEBUG),
modifiedAt: new Date()
},
};
@ -736,13 +763,22 @@ function findCards(sessionId, query) {
update.$set.resultsCount = update.$set.cards.length;
}
// eslint-disable-next-line no-console
// console.log('sessionId:', sessionId);
// eslint-disable-next-line no-console
// console.log('userId:', userId);
// eslint-disable-next-line no-console
// console.log('update:', update);
SessionData.upsert({ userId, sessionId }, update);
if (process.env.DEBUG === 'true') {
console.log('findCards - sessionId:', sessionId);
console.log('findCards - userId:', userId);
console.log('findCards - update:', JSON.stringify(update, null, 2));
}
const upsertResult = SessionData.upsert({ userId, sessionId }, update);
if (process.env.DEBUG === 'true') {
console.log('findCards - upsertResult:', upsertResult);
}
// Check if the session data was actually stored
const storedSessionData = SessionData.findOne({ userId, sessionId });
if (process.env.DEBUG === 'true') {
console.log('findCards - stored session data:', storedSessionData);
console.log('findCards - stored session data count:', storedSessionData ? 1 : 0);
}
// remove old session data
SessionData.remove({
@ -793,6 +829,21 @@ function findCards(sessionId, query) {
type: 1,
};
// Add a small delay to ensure the session data is committed to the database
Meteor.setTimeout(() => {
const sessionDataCursor = SessionData.find({ userId, sessionId });
if (process.env.DEBUG === 'true') {
console.log('findCards - publishing session data cursor (after delay):', sessionDataCursor);
console.log('findCards - session data count (after delay):', sessionDataCursor.count());
}
}, 100);
const sessionDataCursor = SessionData.find({ userId, sessionId });
if (process.env.DEBUG === 'true') {
console.log('findCards - publishing session data cursor:', sessionDataCursor);
console.log('findCards - session data count:', sessionDataCursor.count());
}
return [
cards,
ReactiveCache.getBoards(
@ -812,9 +863,14 @@ function findCards(sessionId, query) {
ReactiveCache.getChecklistItems({ cardId: { $in: cards.map(c => c._id) } }, {}, true),
ReactiveCache.getAttachments({ 'meta.cardId': { $in: cards.map(c => c._id) } }, {}, true).cursor,
ReactiveCache.getCardComments({ cardId: { $in: cards.map(c => c._id) } }, {}, true),
SessionData.find({ userId, sessionId }),
sessionDataCursor,
];
}
return [SessionData.find({ userId, sessionId })];
const sessionDataCursor = SessionData.find({ userId, sessionId });
if (process.env.DEBUG === 'true') {
console.log('findCards - publishing session data cursor (no cards):', sessionDataCursor);
console.log('findCards - session data count (no cards):', sessionDataCursor.count());
}
return [sessionDataCursor];
}