@openlifelog/sdk 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +35 -5
- package/dist/index.mjs +35 -5
- package/package.json +1 -1
- package/resources/metrics.ts +15 -3
- package/resources/workouts.ts +10 -2
- package/utils/units.ts +28 -0
package/dist/index.js
CHANGED
|
@@ -702,6 +702,27 @@ function convertWorkoutDataToMetric(data, measurementSystem) {
|
|
|
702
702
|
if (converted.sets && Array.isArray(converted.sets)) {
|
|
703
703
|
converted.sets = convertSetsDataToMetric(converted.sets, measurementSystem);
|
|
704
704
|
}
|
|
705
|
+
if (converted.updateSets && typeof converted.updateSets === "object") {
|
|
706
|
+
const convertedUpdateSets = {};
|
|
707
|
+
for (const [exerciseId, sets] of Object.entries(converted.updateSets)) {
|
|
708
|
+
if (Array.isArray(sets)) {
|
|
709
|
+
convertedUpdateSets[exerciseId] = convertSetsDataToMetric(sets, measurementSystem);
|
|
710
|
+
} else {
|
|
711
|
+
convertedUpdateSets[exerciseId] = sets;
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
converted.updateSets = convertedUpdateSets;
|
|
715
|
+
}
|
|
716
|
+
if (converted.updateExercises && Array.isArray(converted.updateExercises)) {
|
|
717
|
+
converted.updateExercises = converted.updateExercises.map(
|
|
718
|
+
(exercise) => convertWorkoutDataToMetric(exercise, measurementSystem)
|
|
719
|
+
);
|
|
720
|
+
}
|
|
721
|
+
if (converted.addExercises && Array.isArray(converted.addExercises)) {
|
|
722
|
+
converted.addExercises = converted.addExercises.map(
|
|
723
|
+
(exercise) => convertWorkoutDataToMetric(exercise, measurementSystem)
|
|
724
|
+
);
|
|
725
|
+
}
|
|
705
726
|
if (converted.exercises && Array.isArray(converted.exercises)) {
|
|
706
727
|
converted.exercises = converted.exercises.map(
|
|
707
728
|
(exercise) => convertWorkoutDataToMetric(exercise, measurementSystem)
|
|
@@ -1505,7 +1526,8 @@ var WorkoutsResource = class {
|
|
|
1505
1526
|
* Create a new workout template
|
|
1506
1527
|
*/
|
|
1507
1528
|
async create(request) {
|
|
1508
|
-
const
|
|
1529
|
+
const requestToSend = this.config.autoConvertUnits ? convertWorkoutDataToMetric(request, this.config.measurementSystem) : request;
|
|
1530
|
+
const response = await this.http.post("/v1/workouts", requestToSend);
|
|
1509
1531
|
if (this.config.autoConvertUnits) {
|
|
1510
1532
|
return convertWorkoutDataFromMetric(response.data, this.config.measurementSystem);
|
|
1511
1533
|
}
|
|
@@ -1515,7 +1537,8 @@ var WorkoutsResource = class {
|
|
|
1515
1537
|
* Update a workout template
|
|
1516
1538
|
*/
|
|
1517
1539
|
async update(workoutId, request) {
|
|
1518
|
-
const
|
|
1540
|
+
const requestToSend = this.config.autoConvertUnits ? convertWorkoutDataToMetric(request, this.config.measurementSystem) : request;
|
|
1541
|
+
const response = await this.http.put(`/v1/workouts/${workoutId}`, requestToSend);
|
|
1519
1542
|
if (this.config.autoConvertUnits) {
|
|
1520
1543
|
return convertWorkoutDataFromMetric(response.data, this.config.measurementSystem);
|
|
1521
1544
|
}
|
|
@@ -1983,11 +2006,18 @@ var MetricsResource = class {
|
|
|
1983
2006
|
}
|
|
1984
2007
|
/**
|
|
1985
2008
|
* Update a metric event
|
|
1986
|
-
* Note: metricKey cannot be changed, so we
|
|
1987
|
-
* We'll convert the value assuming it follows the user's preference setting.
|
|
2009
|
+
* Note: metricKey cannot be changed, so we need to fetch the event first to determine if it's a weight metric.
|
|
1988
2010
|
*/
|
|
1989
2011
|
async updateEvent(eventId, request) {
|
|
1990
|
-
const
|
|
2012
|
+
const requestToSend = { ...request };
|
|
2013
|
+
if (this.config.autoConvertUnits && requestToSend.value !== null && requestToSend.value !== void 0) {
|
|
2014
|
+
const existingEvent = await this.getEvent(eventId);
|
|
2015
|
+
const isWeightMetric = existingEvent.metricKey?.includes("weight") || existingEvent.metricKey?.includes("bodyweight");
|
|
2016
|
+
if (isWeightMetric) {
|
|
2017
|
+
requestToSend.value = WeightConverter.toMetric(requestToSend.value, this.config.measurementSystem);
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
2020
|
+
const response = await this.http.put(`/v1/metric-events/${eventId}`, requestToSend);
|
|
1991
2021
|
if (this.config.autoConvertUnits && response.data.value !== null && response.data.value !== void 0) {
|
|
1992
2022
|
const isWeightMetric = response.data.metricKey?.includes("weight") || response.data.metricKey?.includes("bodyweight");
|
|
1993
2023
|
if (isWeightMetric) {
|
package/dist/index.mjs
CHANGED
|
@@ -648,6 +648,27 @@ function convertWorkoutDataToMetric(data, measurementSystem) {
|
|
|
648
648
|
if (converted.sets && Array.isArray(converted.sets)) {
|
|
649
649
|
converted.sets = convertSetsDataToMetric(converted.sets, measurementSystem);
|
|
650
650
|
}
|
|
651
|
+
if (converted.updateSets && typeof converted.updateSets === "object") {
|
|
652
|
+
const convertedUpdateSets = {};
|
|
653
|
+
for (const [exerciseId, sets] of Object.entries(converted.updateSets)) {
|
|
654
|
+
if (Array.isArray(sets)) {
|
|
655
|
+
convertedUpdateSets[exerciseId] = convertSetsDataToMetric(sets, measurementSystem);
|
|
656
|
+
} else {
|
|
657
|
+
convertedUpdateSets[exerciseId] = sets;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
converted.updateSets = convertedUpdateSets;
|
|
661
|
+
}
|
|
662
|
+
if (converted.updateExercises && Array.isArray(converted.updateExercises)) {
|
|
663
|
+
converted.updateExercises = converted.updateExercises.map(
|
|
664
|
+
(exercise) => convertWorkoutDataToMetric(exercise, measurementSystem)
|
|
665
|
+
);
|
|
666
|
+
}
|
|
667
|
+
if (converted.addExercises && Array.isArray(converted.addExercises)) {
|
|
668
|
+
converted.addExercises = converted.addExercises.map(
|
|
669
|
+
(exercise) => convertWorkoutDataToMetric(exercise, measurementSystem)
|
|
670
|
+
);
|
|
671
|
+
}
|
|
651
672
|
if (converted.exercises && Array.isArray(converted.exercises)) {
|
|
652
673
|
converted.exercises = converted.exercises.map(
|
|
653
674
|
(exercise) => convertWorkoutDataToMetric(exercise, measurementSystem)
|
|
@@ -1451,7 +1472,8 @@ var WorkoutsResource = class {
|
|
|
1451
1472
|
* Create a new workout template
|
|
1452
1473
|
*/
|
|
1453
1474
|
async create(request) {
|
|
1454
|
-
const
|
|
1475
|
+
const requestToSend = this.config.autoConvertUnits ? convertWorkoutDataToMetric(request, this.config.measurementSystem) : request;
|
|
1476
|
+
const response = await this.http.post("/v1/workouts", requestToSend);
|
|
1455
1477
|
if (this.config.autoConvertUnits) {
|
|
1456
1478
|
return convertWorkoutDataFromMetric(response.data, this.config.measurementSystem);
|
|
1457
1479
|
}
|
|
@@ -1461,7 +1483,8 @@ var WorkoutsResource = class {
|
|
|
1461
1483
|
* Update a workout template
|
|
1462
1484
|
*/
|
|
1463
1485
|
async update(workoutId, request) {
|
|
1464
|
-
const
|
|
1486
|
+
const requestToSend = this.config.autoConvertUnits ? convertWorkoutDataToMetric(request, this.config.measurementSystem) : request;
|
|
1487
|
+
const response = await this.http.put(`/v1/workouts/${workoutId}`, requestToSend);
|
|
1465
1488
|
if (this.config.autoConvertUnits) {
|
|
1466
1489
|
return convertWorkoutDataFromMetric(response.data, this.config.measurementSystem);
|
|
1467
1490
|
}
|
|
@@ -1929,11 +1952,18 @@ var MetricsResource = class {
|
|
|
1929
1952
|
}
|
|
1930
1953
|
/**
|
|
1931
1954
|
* Update a metric event
|
|
1932
|
-
* Note: metricKey cannot be changed, so we
|
|
1933
|
-
* We'll convert the value assuming it follows the user's preference setting.
|
|
1955
|
+
* Note: metricKey cannot be changed, so we need to fetch the event first to determine if it's a weight metric.
|
|
1934
1956
|
*/
|
|
1935
1957
|
async updateEvent(eventId, request) {
|
|
1936
|
-
const
|
|
1958
|
+
const requestToSend = { ...request };
|
|
1959
|
+
if (this.config.autoConvertUnits && requestToSend.value !== null && requestToSend.value !== void 0) {
|
|
1960
|
+
const existingEvent = await this.getEvent(eventId);
|
|
1961
|
+
const isWeightMetric = existingEvent.metricKey?.includes("weight") || existingEvent.metricKey?.includes("bodyweight");
|
|
1962
|
+
if (isWeightMetric) {
|
|
1963
|
+
requestToSend.value = WeightConverter.toMetric(requestToSend.value, this.config.measurementSystem);
|
|
1964
|
+
}
|
|
1965
|
+
}
|
|
1966
|
+
const response = await this.http.put(`/v1/metric-events/${eventId}`, requestToSend);
|
|
1937
1967
|
if (this.config.autoConvertUnits && response.data.value !== null && response.data.value !== void 0) {
|
|
1938
1968
|
const isWeightMetric = response.data.metricKey?.includes("weight") || response.data.metricKey?.includes("bodyweight");
|
|
1939
1969
|
if (isWeightMetric) {
|
package/package.json
CHANGED
package/resources/metrics.ts
CHANGED
|
@@ -172,11 +172,23 @@ export class MetricsResource {
|
|
|
172
172
|
|
|
173
173
|
/**
|
|
174
174
|
* Update a metric event
|
|
175
|
-
* Note: metricKey cannot be changed, so we
|
|
176
|
-
* We'll convert the value assuming it follows the user's preference setting.
|
|
175
|
+
* Note: metricKey cannot be changed, so we need to fetch the event first to determine if it's a weight metric.
|
|
177
176
|
*/
|
|
178
177
|
async updateEvent(eventId: string, request: UpdateMetricEventRequest): Promise<MetricEvent> {
|
|
179
|
-
|
|
178
|
+
// Convert request value to metric before sending
|
|
179
|
+
const requestToSend = { ...request };
|
|
180
|
+
|
|
181
|
+
// If value is being updated, we need to convert it
|
|
182
|
+
// Since we can't determine the metric type from the request alone, we fetch the event first
|
|
183
|
+
if (this.config.autoConvertUnits && requestToSend.value !== null && requestToSend.value !== undefined) {
|
|
184
|
+
const existingEvent = await this.getEvent(eventId);
|
|
185
|
+
const isWeightMetric = existingEvent.metricKey?.includes('weight') || existingEvent.metricKey?.includes('bodyweight');
|
|
186
|
+
if (isWeightMetric) {
|
|
187
|
+
requestToSend.value = WeightConverter.toMetric(requestToSend.value, this.config.measurementSystem);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const response = await this.http.put<MetricEvent>(`/v1/metric-events/${eventId}`, requestToSend);
|
|
180
192
|
|
|
181
193
|
// Convert response back to user preference
|
|
182
194
|
if (this.config.autoConvertUnits && response.data.value !== null && response.data.value !== undefined) {
|
package/resources/workouts.ts
CHANGED
|
@@ -80,7 +80,11 @@ export class WorkoutsResource {
|
|
|
80
80
|
* Create a new workout template
|
|
81
81
|
*/
|
|
82
82
|
async create(request: CreateWorkoutRequest): Promise<Workout> {
|
|
83
|
-
const
|
|
83
|
+
const requestToSend = this.config.autoConvertUnits
|
|
84
|
+
? convertWorkoutDataToMetric(request, this.config.measurementSystem)
|
|
85
|
+
: request;
|
|
86
|
+
|
|
87
|
+
const response = await this.http.post<Workout>('/v1/workouts', requestToSend);
|
|
84
88
|
|
|
85
89
|
if (this.config.autoConvertUnits) {
|
|
86
90
|
return convertWorkoutDataFromMetric(response.data, this.config.measurementSystem);
|
|
@@ -93,7 +97,11 @@ export class WorkoutsResource {
|
|
|
93
97
|
* Update a workout template
|
|
94
98
|
*/
|
|
95
99
|
async update(workoutId: string, request: UpdateWorkoutRequest): Promise<Workout> {
|
|
96
|
-
const
|
|
100
|
+
const requestToSend = this.config.autoConvertUnits
|
|
101
|
+
? convertWorkoutDataToMetric(request, this.config.measurementSystem)
|
|
102
|
+
: request;
|
|
103
|
+
|
|
104
|
+
const response = await this.http.put<Workout>(`/v1/workouts/${workoutId}`, requestToSend);
|
|
97
105
|
|
|
98
106
|
if (this.config.autoConvertUnits) {
|
|
99
107
|
return convertWorkoutDataFromMetric(response.data, this.config.measurementSystem);
|
package/utils/units.ts
CHANGED
|
@@ -438,6 +438,34 @@ export function convertWorkoutDataToMetric(
|
|
|
438
438
|
converted.sets = convertSetsDataToMetric(converted.sets, measurementSystem);
|
|
439
439
|
}
|
|
440
440
|
|
|
441
|
+
// Convert updateSets object (used in session updates)
|
|
442
|
+
// Format: { exerciseId: [setData, setData, ...] }
|
|
443
|
+
if (converted.updateSets && typeof converted.updateSets === 'object') {
|
|
444
|
+
const convertedUpdateSets: any = {};
|
|
445
|
+
for (const [exerciseId, sets] of Object.entries(converted.updateSets)) {
|
|
446
|
+
if (Array.isArray(sets)) {
|
|
447
|
+
convertedUpdateSets[exerciseId] = convertSetsDataToMetric(sets, measurementSystem);
|
|
448
|
+
} else {
|
|
449
|
+
convertedUpdateSets[exerciseId] = sets;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
converted.updateSets = convertedUpdateSets;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
// Convert updateExercises array (used in session updates)
|
|
456
|
+
if (converted.updateExercises && Array.isArray(converted.updateExercises)) {
|
|
457
|
+
converted.updateExercises = converted.updateExercises.map((exercise: any) =>
|
|
458
|
+
convertWorkoutDataToMetric(exercise, measurementSystem)
|
|
459
|
+
);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// Convert addExercises array (used in session updates)
|
|
463
|
+
if (converted.addExercises && Array.isArray(converted.addExercises)) {
|
|
464
|
+
converted.addExercises = converted.addExercises.map((exercise: any) =>
|
|
465
|
+
convertWorkoutDataToMetric(exercise, measurementSystem)
|
|
466
|
+
);
|
|
467
|
+
}
|
|
468
|
+
|
|
441
469
|
// Convert exercises arrays (nested structures)
|
|
442
470
|
if (converted.exercises && Array.isArray(converted.exercises)) {
|
|
443
471
|
converted.exercises = converted.exercises.map((exercise: any) =>
|