Critical Stability & Performance fixes. Excessive Log Set button gone on QIuck Log screen
This commit is contained in:
@@ -93,10 +93,10 @@
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<link rel="stylesheet" href="/index.css">
|
||||
<link rel="stylesheet" href="/src/index.css">
|
||||
</head>
|
||||
<body class="bg-surface text-on-surface h-screen overflow-hidden selection:bg-primary-container selection:text-on-primary-container">
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/index.tsx"></script>
|
||||
<script type="module" src="/src/index.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -13,12 +13,12 @@
|
||||
"@prisma/adapter-better-sqlite3": "^7.1.0",
|
||||
"@prisma/client": "^6.19.0",
|
||||
"@types/better-sqlite3": "^7.6.13",
|
||||
"bcryptjs": "*",
|
||||
"bcryptjs": "3.0.3",
|
||||
"better-sqlite3": "^12.5.0",
|
||||
"cors": "*",
|
||||
"dotenv": "*",
|
||||
"express": "*",
|
||||
"jsonwebtoken": "*",
|
||||
"cors": "2.8.5",
|
||||
"dotenv": "17.2.3",
|
||||
"express": "5.1.0",
|
||||
"jsonwebtoken": "9.0.2",
|
||||
"ts-node-dev": "^2.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -32,4 +32,4 @@
|
||||
"ts-node": "*",
|
||||
"typescript": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -41,6 +41,32 @@ router.get('/', async (req: any, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// Get last set for specific exercise
|
||||
router.get('/:id/last-set', async (req: any, res) => {
|
||||
try {
|
||||
const userId = req.user.userId;
|
||||
const exerciseId = req.params.id;
|
||||
|
||||
const lastSet = await prisma.workoutSet.findFirst({
|
||||
where: {
|
||||
exerciseId,
|
||||
session: { userId } // Ensure optimization by filtering sessions of the user
|
||||
},
|
||||
include: {
|
||||
session: true
|
||||
},
|
||||
orderBy: {
|
||||
timestamp: 'desc'
|
||||
}
|
||||
});
|
||||
|
||||
res.json({ success: true, set: lastSet });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Server error' });
|
||||
}
|
||||
});
|
||||
|
||||
// Create/Update exercise
|
||||
router.post('/', async (req: any, res) => {
|
||||
try {
|
||||
|
||||
@@ -52,12 +52,12 @@ export const updateActiveSession = async (userId: string, session: WorkoutSessio
|
||||
};
|
||||
|
||||
export const deleteSetFromActiveSession = async (userId: string, setId: string): Promise<void> => {
|
||||
await api.delete(`/sessions/active/set/${setId}`);
|
||||
await api.delete(`/sessions/active/set/${setId}`);
|
||||
};
|
||||
|
||||
export const updateSetInActiveSession = async (userId: string, setId: string, setData: Partial<WorkoutSet>): Promise<WorkoutSet> => {
|
||||
const response = await api.put(`/sessions/active/set/${setId}`, setData);
|
||||
return response.updatedSet;
|
||||
const response = await api.put(`/sessions/active/set/${setId}`, setData);
|
||||
return response.updatedSet;
|
||||
};
|
||||
|
||||
export const deleteActiveSession = async (userId: string): Promise<void> => {
|
||||
@@ -85,21 +85,17 @@ export const saveExercise = async (userId: string, exercise: ExerciseDef): Promi
|
||||
};
|
||||
|
||||
export const getLastSetForExercise = async (userId: string, exerciseId: string): Promise<WorkoutSet | undefined> => {
|
||||
// This requires fetching sessions or a specific endpoint.
|
||||
// For performance, we should probably have an endpoint for this.
|
||||
// For now, let's fetch sessions and find it client side, or implement endpoint later.
|
||||
// Given the async nature, we need to change the signature to Promise.
|
||||
// The caller needs to await this.
|
||||
const sessions = await getSessions(userId);
|
||||
for (const session of sessions) {
|
||||
for (let i = session.sets.length - 1; i >= 0; i--) {
|
||||
if (session.sets[i].exerciseId === exerciseId) {
|
||||
return session.sets[i];
|
||||
}
|
||||
try {
|
||||
const response = await api.get(`/exercises/${exerciseId}/last-set`);
|
||||
if (response.success && response.set) {
|
||||
return response.set;
|
||||
}
|
||||
return undefined;
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch last set:", error);
|
||||
return undefined;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
|
||||
export const getPlans = async (userId: string): Promise<WorkoutPlan[]> => {
|
||||
try {
|
||||
@@ -20,7 +20,7 @@
|
||||
"jsx": "react-jsx",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"./*"
|
||||
"./src/*"
|
||||
]
|
||||
},
|
||||
"allowImportingTsExtensions": true,
|
||||
|
||||
@@ -23,7 +23,7 @@ export default defineConfig(({ mode }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, '.'),
|
||||
'@': path.resolve(__dirname, './src'),
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user