Add seenByTenant tracking feature
- Add seenByTenant field to BillingLocation interface - Implement setSeenByTenant function to mark locations as viewed by tenant - Checks if flag is already set to avoid unnecessary DB updates - Includes TypeDoc documentation - Update LocationViewPage to call setSeenByTenant when non-owner visits - Add seenByTenant to fetchAllLocations projection - Update LocationCard to show "seen by tenant" status indicator - Displays in "Monthly statement" fieldset with checkmark icon - Shows alongside monthly expense total - Add localization strings for monthly statement and seen status 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -411,6 +411,7 @@ export const fetchAllLocations = withUser(async (user:AuthenticatedUser, year:nu
|
||||
"yearMonth.year": 1,
|
||||
"yearMonth.month": 1,
|
||||
"bills": 1,
|
||||
"seenByTenant": 1,
|
||||
// "bills.attachment": 0,
|
||||
// "bills.notes": 0,
|
||||
// "bills.barcodeImage": 1,
|
||||
@@ -529,4 +530,36 @@ export const deleteLocationById = withUser(async (user:AuthenticatedUser, locati
|
||||
message: null,
|
||||
errors: undefined,
|
||||
};
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* Sets the `seenByTenant` flag to true for a specific location.
|
||||
*
|
||||
* This function marks a location as viewed by the tenant. It first checks if the flag
|
||||
* is already set to true to avoid unnecessary database updates.
|
||||
*
|
||||
* @param {string} locationID - The ID of the location to update
|
||||
* @returns {Promise<void>}
|
||||
*
|
||||
* @example
|
||||
* await setSeenByTenant("507f1f77bcf86cd799439011");
|
||||
*/
|
||||
export const setSeenByTenant = async (locationID: string): Promise<void> => {
|
||||
const dbClient = await getDbClient();
|
||||
|
||||
// First check if the location exists and if seenByTenant is already true
|
||||
const location = await dbClient.collection<BillingLocation>("lokacije")
|
||||
.findOne({ _id: locationID });
|
||||
|
||||
// If location doesn't exist or seenByTenant is already true, no update needed
|
||||
if (!location || location.seenByTenant === true) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Update the location to mark it as seen by tenant
|
||||
await dbClient.collection<BillingLocation>("lokacije")
|
||||
.updateOne(
|
||||
{ _id: locationID },
|
||||
{ $set: { seenByTenant: true } }
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user