Skip to content

Commit a58cab7

Browse files
authored
Merge pull request #259 from DestinyItemManager/preserve-time
Preserve timestamps
2 parents 388ce98 + 82b6880 commit a58cab7

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

api/routes/import.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,16 +231,22 @@ export async function statelyImport(
231231
triumphs: ExportResponse['triumphs'],
232232
searches: ExportResponse['searches'],
233233
itemHashTags: ItemHashTag[],
234+
deleteExisting = true,
234235
): Promise<number> {
235236
// TODO: what we should do, is map all these to items, and then we can just do
236237
// batch puts, 25 at a time.
237238

238239
let numTriumphs = 0;
239-
await deleteAllDataForUser(bungieMembershipId, platformMembershipIds);
240+
if (deleteExisting) {
241+
await deleteAllDataForUser(bungieMembershipId, platformMembershipIds);
242+
}
243+
244+
const settingsItem = convertToStatelyItem(
245+
{ ...defaultSettings, ...settings },
246+
bungieMembershipId,
247+
);
240248

241-
const items: AnyItem[] = [
242-
convertToStatelyItem({ ...defaultSettings, ...settings }, bungieMembershipId),
243-
];
249+
const items: AnyItem[] = [];
244250
items.push(...importLoadouts(loadouts));
245251
items.push(...importTags(itemAnnotations));
246252
for (const platformMembershipId of platformMembershipIds) {
@@ -262,9 +268,17 @@ export async function statelyImport(
262268
items.push(...importSearches(platformMembershipId, searches));
263269
}
264270

271+
// Put the settings in first since it's in a different group
272+
await client.put({
273+
item: settingsItem,
274+
mustNotExist: true,
275+
});
265276
// OK now put them in as fast as we can
266277
for (const batch of batches(items)) {
267-
await client.putBatch(...batch);
278+
// We shouldn't have any existing items...
279+
await client.putBatch(
280+
...batch.map((item) => ({ item, mustNotExist: true, overwriteMetadataTimestamps: true })),
281+
);
268282
await delay(100); // give it some time to flush
269283
}
270284

api/routes/loadout-share.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export const loadoutShareHandler = asyncHandler(async (req, res) => {
5454
});
5555
}
5656

57-
const validationResult = validateLoadout('loadout_share', loadout, appId);
57+
const validationResult = validateLoadout('loadout_share', loadout);
5858
if (validationResult) {
5959
res.status(400).send(validationResult);
6060
return;

api/routes/update.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ export const updateHandler = asyncHandler(async (req, res) => {
154154
triumphs,
155155
searches,
156156
itemHashTags,
157+
!migrationState.lastError,
157158
);
158159
};
159160

@@ -232,7 +233,7 @@ function validateUpdates(
232233
break;
233234

234235
case 'loadout':
235-
result = validateUpdateLoadout(update.payload, appId);
236+
result = validateUpdateLoadout(update.payload);
236237
break;
237238

238239
case 'tag':
@@ -514,11 +515,11 @@ async function updateLoadout(
514515
metrics.timing('update.loadout', start);
515516
}
516517

517-
function validateUpdateLoadout(loadout: Loadout, appId: string): ProfileUpdateResult {
518-
return validateLoadout('update', loadout, appId) ?? { status: 'Success' };
518+
function validateUpdateLoadout(loadout: Loadout): ProfileUpdateResult {
519+
return validateLoadout('update', loadout) ?? { status: 'Success' };
519520
}
520521

521-
export function validateLoadout(metricPrefix: string, loadout: Loadout, appId: string) {
522+
export function validateLoadout(metricPrefix: string, loadout: Loadout) {
522523
if (!loadout.name) {
523524
metrics.increment(`${metricPrefix}.validation.loadoutNameMissing.count`);
524525
return {

0 commit comments

Comments
 (0)