From efac17810c5066670d5d4edb470e55089f640b44 Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Thu, 7 Mar 2019 11:22:19 -0500 Subject: [PATCH] Check for valid indices when reordering favorites --- modules/core/context.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/core/context.js b/modules/core/context.js index 0bfb90dd9..a9a4ee5ea 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -312,10 +312,13 @@ export function coreContext() { /* Presets */ var presets; context.presets = function() { return presets; }; - //get favorites from local storage + context.getFavoritePresets = function() { + // get favorites from local storage var favs = JSON.parse(context.storage('favorite_presets')) || []; return favs.filter(function(d) { + // iD's presets could have changed since this favorite was saved, + // so make sure it's still valid. var preset = presets.item(d.id); if (preset === null) { return false; @@ -358,7 +361,13 @@ export function coreContext() { }); }; context.moveFavoritePreset = function(fromIndex, toIndex) { + if (fromIndex === toIndex) return; + var favs = context.getFavoritePresets(); + + if (fromIndex < 0 || toIndex < 0 || + fromIndex >= favs.length || toIndex >= favs.length) return; + favs.splice(toIndex, 0, favs.splice(fromIndex, 1)[0]); setFavoritePresets(favs); };