mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 06:07:21 +01:00
* use lean for getting task lists * Only load necessary user data for group-plans call Also don’t make a db request for groups if the user is in none * Only load necessary user fields for in app rewards * Optimize updateStore by not checking every item * Only load necessary user data for task scoring * improve performance of inbox request calls * merge fix * fix scoring task call * add quests to scoring call * fix showing official pinned items * also load achievements
83 lines
1.7 KiB
JavaScript
83 lines
1.7 KiB
JavaScript
import each from 'lodash/each';
|
|
import defaults from 'lodash/defaults';
|
|
|
|
import {
|
|
CLASSES,
|
|
GEAR_TYPES,
|
|
} from '../constants';
|
|
import { ownsItem } from './gear-helper';
|
|
|
|
import weapon from './weapon';
|
|
import armor from './armor';
|
|
import head from './head';
|
|
import shield from './shield';
|
|
import back from './back';
|
|
import body from './body';
|
|
import headAccessory from './head-accessory';
|
|
import eyewear from './eyewear';
|
|
import memoize from '../../fns/datedMemoize';
|
|
|
|
const gear = {
|
|
weapon,
|
|
armor,
|
|
head,
|
|
shield,
|
|
back,
|
|
body,
|
|
headAccessory,
|
|
eyewear,
|
|
};
|
|
|
|
function populateGear (key, klass, type, index, item) {
|
|
const set = `${klass}-${index}`;
|
|
|
|
defaults(item, {
|
|
type,
|
|
key,
|
|
set,
|
|
klass,
|
|
index,
|
|
str: 0,
|
|
int: 0,
|
|
per: 0,
|
|
con: 0,
|
|
canBuy: () => false,
|
|
});
|
|
|
|
if (item.canOwn === undefined && (item.mystery || key.indexOf('takeThis') !== -1)) {
|
|
item.canOwn = ownsItem(key);
|
|
}
|
|
}
|
|
|
|
function buildFlatList () {
|
|
/*
|
|
The gear is exported as a tree (defined above), and a flat list
|
|
(eg, {weapon_healer_1: .., shield_special_0: ...}) since
|
|
they are needed in different forms at different points in the app
|
|
*/
|
|
const flat = {};
|
|
|
|
each(GEAR_TYPES, type => {
|
|
const allGearTypes = CLASSES.concat(['base', 'special', 'mystery', 'armoire']);
|
|
|
|
each(allGearTypes, klass => {
|
|
each(gear[type][klass], (item, index) => {
|
|
const key = `${type}_${klass}_${index}`;
|
|
populateGear(key, klass, type, index, item);
|
|
|
|
flat[key] = item;
|
|
});
|
|
});
|
|
});
|
|
return flat;
|
|
}
|
|
|
|
const memoizedFlatList = memoize(buildFlatList);
|
|
|
|
export default {
|
|
tree: gear,
|
|
get flat () {
|
|
return memoizedFlatList();
|
|
},
|
|
};
|