chore: release v1.5.0 (#67)
* chore: release v1.4.0 * feat: timezone-aware locale formatting - Add TIMEZONE_TO_REGION map for 50+ timezones worldwide - Combine app language with timezone region (e.g., en + Europe/Berlin → en-DE) - Fix times displaying in wrong timezone (treated as UTC instead of local) - Add parseLocalDateTime() to handle ISO strings without UTC conversion - Users now get regional formatting (24h time, local date format) regardless of app language - Swedish user with en-SE locale now gets yyyy-mm-dd format and 24h time - German user with en-DE locale gets dd.mm.yyyy format and 24h time - Add missing i18n translation key 'lastSent' - Update all getSystemLocale() calls to pass app language parameter * chore: release v1.5.0 * fix: timezone-independent test for CI (use 14:00 instead of 22:00) * fix: make timezone test independent of server timezone
This commit is contained in:
+43
-12
@@ -121,12 +121,28 @@ export async function doseRoutes(app: FastifyInstance) {
|
||||
|
||||
const { doseId } = request.params;
|
||||
|
||||
await db.delete(doseTracking).where(
|
||||
and(
|
||||
eq(doseTracking.userId, userId),
|
||||
eq(doseTracking.doseId, doseId)
|
||||
)
|
||||
);
|
||||
// Check if this dose was dismissed
|
||||
const [existing] = await db.select()
|
||||
.from(doseTracking)
|
||||
.where(
|
||||
and(
|
||||
eq(doseTracking.userId, userId),
|
||||
eq(doseTracking.doseId, doseId)
|
||||
)
|
||||
);
|
||||
|
||||
if (existing?.dismissed) {
|
||||
// Already dismissed - keep the record as-is
|
||||
// The dose stays dismissed, we just acknowledge the undo request
|
||||
} else {
|
||||
// Not dismissed - delete the record entirely
|
||||
await db.delete(doseTracking).where(
|
||||
and(
|
||||
eq(doseTracking.userId, userId),
|
||||
eq(doseTracking.doseId, doseId)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return { success: true };
|
||||
}
|
||||
@@ -321,12 +337,27 @@ export async function doseRoutes(app: FastifyInstance) {
|
||||
return reply.notFound("Share link not found");
|
||||
}
|
||||
|
||||
await db.delete(doseTracking).where(
|
||||
and(
|
||||
eq(doseTracking.userId, share.userId),
|
||||
eq(doseTracking.doseId, doseId)
|
||||
)
|
||||
);
|
||||
// Check if this dose was dismissed
|
||||
const [existing] = await db.select()
|
||||
.from(doseTracking)
|
||||
.where(
|
||||
and(
|
||||
eq(doseTracking.userId, share.userId),
|
||||
eq(doseTracking.doseId, doseId)
|
||||
)
|
||||
);
|
||||
|
||||
if (existing?.dismissed) {
|
||||
// Already dismissed - keep the record as-is
|
||||
} else {
|
||||
// Not dismissed - delete the record entirely
|
||||
await db.delete(doseTracking).where(
|
||||
and(
|
||||
eq(doseTracking.userId, share.userId),
|
||||
eq(doseTracking.doseId, doseId)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return { success: true };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user