mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-05-01 09:14:52 +00:00
useInLibrary refactored to use ctx
This commit is contained in:
parent
6f2ef06cd6
commit
7e6e6a896f
1 changed files with 13 additions and 7 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue