Move fresco plugin to use redux store
Summary: This diff moves the state to PersistedState Reviewed By: danielbuechele Differential Revision: D14126419 fbshipit-source-id: aaf5f035ddc7e64ad2602ae4b80c9901a20df144
This commit is contained in:
committed by
Facebook Github Bot
parent
6ee8d72a1e
commit
01ee57c601
@@ -30,13 +30,16 @@ import ImagePool from './ImagePool.js';
|
|||||||
|
|
||||||
export type ImageEventWithId = ImageEvent & {eventId: number};
|
export type ImageEventWithId = ImageEvent & {eventId: number};
|
||||||
|
|
||||||
type PluginState = {
|
type PersistedState = {
|
||||||
images: ImagesList,
|
images: ImagesList,
|
||||||
isDebugOverlayEnabled: boolean,
|
|
||||||
isAutoRefreshEnabled: boolean,
|
|
||||||
events: Array<ImageEventWithId>,
|
events: Array<ImageEventWithId>,
|
||||||
imagesMap: ImagesMap,
|
imagesMap: ImagesMap,
|
||||||
|
};
|
||||||
|
|
||||||
|
type PluginState = {
|
||||||
selectedImage: ?ImageId,
|
selectedImage: ?ImageId,
|
||||||
|
isDebugOverlayEnabled: boolean,
|
||||||
|
isAutoRefreshEnabled: boolean,
|
||||||
};
|
};
|
||||||
|
|
||||||
const EmptySidebar = styled(FlexRow)({
|
const EmptySidebar = styled(FlexRow)({
|
||||||
@@ -49,18 +52,21 @@ const EmptySidebar = styled(FlexRow)({
|
|||||||
|
|
||||||
const DEBUG = false;
|
const DEBUG = false;
|
||||||
|
|
||||||
export default class extends FlipperPlugin<PluginState> {
|
export default class extends FlipperPlugin<PluginState, *, PersistedState> {
|
||||||
|
static defaultPersistedState: PersistedState = {
|
||||||
|
images: [],
|
||||||
|
events: [],
|
||||||
|
imagesMap: {},
|
||||||
|
};
|
||||||
|
|
||||||
state: PluginState;
|
state: PluginState;
|
||||||
imagePool: ImagePool;
|
imagePool: ImagePool;
|
||||||
nextEventId: number = 1;
|
nextEventId: number = 1;
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
images: [],
|
|
||||||
events: [],
|
|
||||||
selectedImage: null,
|
selectedImage: null,
|
||||||
isDebugOverlayEnabled: false,
|
isDebugOverlayEnabled: false,
|
||||||
isAutoRefreshEnabled: false,
|
isAutoRefreshEnabled: false,
|
||||||
imagesMap: {},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
@@ -70,8 +76,11 @@ export default class extends FlipperPlugin<PluginState> {
|
|||||||
}
|
}
|
||||||
this.updateCaches('init');
|
this.updateCaches('init');
|
||||||
this.client.subscribe('events', (event: ImageEvent) => {
|
this.client.subscribe('events', (event: ImageEvent) => {
|
||||||
this.setState({
|
this.props.setPersistedState({
|
||||||
events: [{eventId: this.nextEventId, ...event}, ...this.state.events],
|
events: [
|
||||||
|
{eventId: this.nextEventId, ...event},
|
||||||
|
...this.props.persistedState.events,
|
||||||
|
],
|
||||||
});
|
});
|
||||||
this.nextEventId++;
|
this.nextEventId++;
|
||||||
});
|
});
|
||||||
@@ -83,7 +92,7 @@ export default class extends FlipperPlugin<PluginState> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
this.imagePool = new ImagePool(this.getImage, (images: ImagesMap) =>
|
this.imagePool = new ImagePool(this.getImage, (images: ImagesMap) =>
|
||||||
this.setState({imagesMap: images}),
|
this.props.setPersistedState({imagesMap: images}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +109,7 @@ export default class extends FlipperPlugin<PluginState> {
|
|||||||
response.levels.forEach(data =>
|
response.levels.forEach(data =>
|
||||||
this.imagePool.fetchImages(data.imageIds),
|
this.imagePool.fetchImages(data.imageIds),
|
||||||
);
|
);
|
||||||
this.setState({images: response.levels});
|
this.props.setPersistedState({images: response.levels});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -162,8 +171,8 @@ export default class extends FlipperPlugin<PluginState> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const maybeImage = this.state.imagesMap[selectedImage];
|
const maybeImage = this.props.persistedState.imagesMap[selectedImage];
|
||||||
const events = this.state.events.filter(e =>
|
const events = this.props.persistedState.events.filter(e =>
|
||||||
e.imageIds.includes(selectedImage),
|
e.imageIds.includes(selectedImage),
|
||||||
);
|
);
|
||||||
return <ImagesSidebar image={maybeImage} events={events} />;
|
return <ImagesSidebar image={maybeImage} events={events} />;
|
||||||
@@ -173,7 +182,7 @@ export default class extends FlipperPlugin<PluginState> {
|
|||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<ImagesCacheOverview
|
<ImagesCacheOverview
|
||||||
images={this.state.images}
|
images={this.props.persistedState.images}
|
||||||
onClear={this.onClear}
|
onClear={this.onClear}
|
||||||
onTrimMemory={this.onTrimMemory}
|
onTrimMemory={this.onTrimMemory}
|
||||||
onRefresh={() => this.updateCaches('refresh')}
|
onRefresh={() => this.updateCaches('refresh')}
|
||||||
@@ -182,8 +191,8 @@ export default class extends FlipperPlugin<PluginState> {
|
|||||||
isDebugOverlayEnabled={this.state.isDebugOverlayEnabled}
|
isDebugOverlayEnabled={this.state.isDebugOverlayEnabled}
|
||||||
isAutoRefreshEnabled={this.state.isAutoRefreshEnabled}
|
isAutoRefreshEnabled={this.state.isAutoRefreshEnabled}
|
||||||
onImageSelected={this.onImageSelected}
|
onImageSelected={this.onImageSelected}
|
||||||
imagesMap={this.state.imagesMap}
|
imagesMap={this.props.persistedState.imagesMap}
|
||||||
events={this.state.events}
|
events={this.props.persistedState.events}
|
||||||
/>
|
/>
|
||||||
<DetailSidebar>{this.renderSidebar()}</DetailSidebar>
|
<DetailSidebar>{this.renderSidebar()}</DetailSidebar>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
|
|||||||
Reference in New Issue
Block a user