reducer: (s, a) => { if (a.server.name === 'localhost') return {}; const servers = utils.clone(s.servers); servers[a.server.name] = utils.merge(servers[a.server.name], webAPIServerToPatcherServer(a.server)); return { servers, }; },
reducer: (s, a) => { const characters = utils.clone(s.characters); delete characters[a.id]; const servers = updateCharacterCounts(utils.clone(s.servers), characters); return { characters, servers, }; },
reducer: (s, a) => { if (s && isEqual(s.characters[a.character.id], a.character)) { return; } const characters = utils.clone(s.characters); characters[a.character.id] = a.character; const servers = updateCharacterCounts(utils.clone(s.servers), characters); return { characters, servers, }; },
function webAPIServerToPatcherServer(server: webAPI.ServerModel): PatcherServer { const channels = patcher.getAllChannels(); const channelIndex = utils.findIndexWhere(channels, c => c.channelID === server.channelID); const channel = channels[channelIndex]; return utils.merge({ name: server.name, available: server.playerMaximum > 0, type: ServerType.CUGAME, channelStatus: channel ? channel.channelStatus : ChannelStatus.NotInstalled, apiHost: server.apiHost, }, server); }
reducer: (s, a) => { const servers = utils.clone(s.servers); servers[a.id].available = false; return { servers, }; },
reducer: (s, a) => { const alerts = utils.clone(s.alerts); delete alerts[a.id]; return { alerts, }; },
reducer: (s, a) => { const alerts = utils.clone(s.alerts); alerts[a.alert.id] = a.alert; return { alerts, }; },
export function shouldShowItem(item: InventoryItem.Fragment, activeFilters: ActiveFilters, searchValue: string) { const hasFilter = hasActiveFilterButtons(activeFilters); const hasSearch = hasFilterText(searchValue); const itemName = getItemDefinitionName(item); // Active filters compared to item gearSlots const doActiveFiltersIncludeItem = _.findIndex(_.values(activeFilters), (filter) => { return inventoryFilterButtons[filter.name].filter(item); }) > -1; // Search text compared to itemName const doesSearchValueIncludeItem = utils.doesSearchInclude(searchValue, itemName); // Do active filters and search include item? if (hasFilter && hasSearch) { return doActiveFiltersIncludeItem && doesSearchValueIncludeItem; // Do active filters include item? } else if (hasFilter && !hasSearch) { return doActiveFiltersIncludeItem; // Does search value include item? } else if (!hasFilter && hasSearch) { return doesSearchValueIncludeItem; // If there are no filters or searchValue, every item should be shown. } else { return true; } }
events.on(characterUpdatedEvent, (characterJSON: string) => { const character = utils.tryParseJSON<webAPI.SimpleCharacter>(characterJSON, client.debug); if (character !== null) { if (controllerState && isEqual(controllerState.characters[character.id], character)) { // No need to update character if already equal to what we have in state. return; } // Update character dispatch(characterUpdate(character)); } });
export function getContainerColor(item: InventoryItem.Fragment, alpha?: number) { if (item && item.containerColor) { const { containerColor } = item; if (containerColor) { return `rgba(${containerColor.r}, ${containerColor.g}, ${containerColor.b}, ${alpha || 1})`; } else { return utils.lightenColor(colors.filterBackgroundColor, 5); } } if (!item) { console.error('You provided an undefined item to getContainerColor() function'); } }