From 01ee57c601d84281f2304c463850feae73a2a340 Mon Sep 17 00:00:00 2001 From: Pritesh Nandgaonkar Date: Thu, 21 Feb 2019 07:12:15 -0800 Subject: [PATCH] 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 --- src/plugins/fresco/index.js | 41 ++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/plugins/fresco/index.js b/src/plugins/fresco/index.js index 397a17d52..fefddd4c4 100644 --- a/src/plugins/fresco/index.js +++ b/src/plugins/fresco/index.js @@ -30,13 +30,16 @@ import ImagePool from './ImagePool.js'; export type ImageEventWithId = ImageEvent & {eventId: number}; -type PluginState = { +type PersistedState = { images: ImagesList, - isDebugOverlayEnabled: boolean, - isAutoRefreshEnabled: boolean, events: Array, imagesMap: ImagesMap, +}; + +type PluginState = { selectedImage: ?ImageId, + isDebugOverlayEnabled: boolean, + isAutoRefreshEnabled: boolean, }; const EmptySidebar = styled(FlexRow)({ @@ -49,18 +52,21 @@ const EmptySidebar = styled(FlexRow)({ const DEBUG = false; -export default class extends FlipperPlugin { +export default class extends FlipperPlugin { + static defaultPersistedState: PersistedState = { + images: [], + events: [], + imagesMap: {}, + }; + state: PluginState; imagePool: ImagePool; nextEventId: number = 1; state = { - images: [], - events: [], selectedImage: null, isDebugOverlayEnabled: false, isAutoRefreshEnabled: false, - imagesMap: {}, }; init() { @@ -70,8 +76,11 @@ export default class extends FlipperPlugin { } this.updateCaches('init'); this.client.subscribe('events', (event: ImageEvent) => { - this.setState({ - events: [{eventId: this.nextEventId, ...event}, ...this.state.events], + this.props.setPersistedState({ + events: [ + {eventId: this.nextEventId, ...event}, + ...this.props.persistedState.events, + ], }); this.nextEventId++; }); @@ -83,7 +92,7 @@ export default class extends FlipperPlugin { ); 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 { response.levels.forEach(data => 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 { ); } - const maybeImage = this.state.imagesMap[selectedImage]; - const events = this.state.events.filter(e => + const maybeImage = this.props.persistedState.imagesMap[selectedImage]; + const events = this.props.persistedState.events.filter(e => e.imageIds.includes(selectedImage), ); return ; @@ -173,7 +182,7 @@ export default class extends FlipperPlugin { return ( this.updateCaches('refresh')} @@ -182,8 +191,8 @@ export default class extends FlipperPlugin { isDebugOverlayEnabled={this.state.isDebugOverlayEnabled} isAutoRefreshEnabled={this.state.isAutoRefreshEnabled} onImageSelected={this.onImageSelected} - imagesMap={this.state.imagesMap} - events={this.state.events} + imagesMap={this.props.persistedState.imagesMap} + events={this.props.persistedState.events} /> {this.renderSidebar()}