diff --git a/website/server/controllers/api-v3/content.js b/website/server/controllers/api-v3/content.js index 5c3a3c5fd4..b547459d2f 100644 --- a/website/server/controllers/api-v3/content.js +++ b/website/server/controllers/api-v3/content.js @@ -6,10 +6,14 @@ const IS_PROD = nconf.get('IS_PROD'); const api = {}; -const MOBILE_FILTER = `achievements,questSeriesAchievements,animalColorAchievements,animalSetAchievements,stableAchievements, -mystery,bundles,loginIncentives,pets,premiumPets,specialPets,questPets,wackyPets,mounts,premiumMounts,specialMounts,questMounts, -events,dropEggs,questEggs,dropHatchingPotions,premiumHatchingPotions,wackyHatchingPotions,backgroundsFlat,questsByLevel,gear.tree, -tasksByCategory,userDefaults,timeTravelStable,gearTypes,cardTypes`; +const MOBILE_FILTER = ['achievements', 'questSeriesAchievements', 'animalColorAchievements', 'animalSetAchievements', +'stableAchievements', 'mystery', 'bundles', 'loginIncentives', 'pets', 'premiumPets', 'specialPets', 'questPets', +'wackyPets', 'mounts', 'premiumMounts,specialMounts,questMounts', 'events', 'dropEggs', 'questEggs', 'dropHatchingPotions', +'premiumHatchingPotions', 'wackyHatchingPotions', 'backgroundsFlat', 'questsByLevel', 'gear.tree', 'tasksByCategory', +'userDefaults', 'timeTravelStable', 'gearTypes', 'cardTypes']; + +const ANDROID_FILTER = [...MOBILE_FILTER, 'appearances.background']; +const IOS_FILTER = [...MOBILE_FILTER, 'backgrounds']; /** * @api {get} /api/v3/content Get all available content objects @@ -70,17 +74,20 @@ api.getContent = { language = proposedLang; } + let filter_list = []; let filter = req.query.filter || ''; // apply defaults for mobile clients if (filter === '') { if (req.headers['x-client'] === 'habitica-android') { - filter = `${MOBILE_FILTER},appearances.background`; + filter_list = ANDROID_FILTER; } else if (req.headers['x-client'] === 'habitica-ios') { - filter = `${MOBILE_FILTER},backgrounds`; + filter_list = IOS_FILTER; } + } else { + filter_list = filter.split(','); } - serveContent(res, language, filter, IS_PROD); + serveContent(res, language, filter_list, IS_PROD); }, }; diff --git a/website/server/libs/content.js b/website/server/libs/content.js index 94321cdf72..4cb0b3b690 100644 --- a/website/server/libs/content.js +++ b/website/server/libs/content.js @@ -55,7 +55,7 @@ export function hashForFilter (filter) { export function serveContent (res, language, filter, isProd) { // Build usable filter object const filterObj = {}; - filter.split(',').forEach(item => { + filter.forEach(item => { if (item.includes('.')) { const [key, subkey] = item.split('.'); if (!filterObj[key]) {