useInLibrary refactored to use ctx

This commit is contained in:
nklhrstv 2020-09-05 23:37:35 +03:00
parent 6f2ef06cd6
commit 7e6e6a896f

View file

@ -4,14 +4,20 @@ const React = require('react');
const { useServices } = require('stremio/services'); const { useServices } = require('stremio/services');
const useModelState = require('stremio/common/useModelState'); const useModelState = require('stremio/common/useModelState');
const mapLibraryState = (ctx) => {
return ctx.library;
};
const useInLibrary = (metaItem) => { const useInLibrary = (metaItem) => {
const { core } = useServices(); const { core } = useServices();
const initLibraryItemsState = React.useCallback(() => { const initLibraryState = React.useCallback(() => {
return core.transport.getState('library_items'); const ctx = core.transport.getState('ctx');
return mapLibraryState(ctx);
}, []); }, []);
const libraryItems = useModelState({ const library = useModelState({
model: 'library_items', model: 'ctx',
init: initLibraryItemsState init: initLibraryState,
map: mapLibraryState
}); });
const addToLibrary = React.useCallback((metaItem) => { const addToLibrary = React.useCallback((metaItem) => {
core.transport.dispatch({ core.transport.dispatch({
@ -32,8 +38,8 @@ const useInLibrary = (metaItem) => {
}); });
}, []); }, []);
const inLibrary = React.useMemo(() => { const inLibrary = React.useMemo(() => {
return libraryItems.ids.includes(metaItem !== null ? metaItem.id : null); return metaItem !== null && metaItem.id in library && !library[metaItem.id].removed;
}, [metaItem, libraryItems]); }, [metaItem, library]);
const toggleInLibrary = React.useMemo(() => { const toggleInLibrary = React.useMemo(() => {
return metaItem !== null ? return metaItem !== null ?
() => inLibrary ? removeFromLibrary(metaItem) : addToLibrary(metaItem) () => inLibrary ? removeFromLibrary(metaItem) : addToLibrary(metaItem)