Fixed: Custom metadata source doesn't get saved from UI

Fixes #537
This commit is contained in:
Qstick 2018-11-10 22:01:36 -05:00
parent 6855a7848e
commit 002234f71b
2 changed files with 54 additions and 31 deletions

View file

@ -13,7 +13,10 @@ class MetadataSettings extends Component {
constructor(props, context) {
super(props, context);
this._saveCallback = null;
this.state = {
isSaving: false,
hasPendingChanges: false
};
}
@ -21,35 +24,41 @@ class MetadataSettings extends Component {
//
// Listeners
setMetadataProviderRef = (ref) => {
this._metadataProvider = ref;
onChildMounted = (saveCallback) => {
this._saveCallback = saveCallback;
}
onHasPendingChange = (hasPendingChanges) => {
this.setState({
hasPendingChanges
});
onChildStateChange = (payload) => {
this.setState(payload);
}
onSavePress = () => {
this._metadataProvider.getWrappedInstance().save();
if (this._saveCallback) {
this._saveCallback();
}
}
//
// Render
render() {
const {
isSaving,
hasPendingChanges
} = this.state;
return (
<PageContent title="Metadata Settings">
<SettingsToolbarConnector
hasPendingChanges={this.state.hasPendingChanges}
isSaving={isSaving}
hasPendingChanges={hasPendingChanges}
onSavePress={this.onSavePress}
/>
<PageContentBodyConnector>
<MetadatasConnector />
<MetadataProviderConnector
ref={this.setMetadataProviderRef}
onHasPendingChange={this.onHasPendingChange}
onChildMounted={this.onChildMounted}
onChildStateChange={this.onChildStateChange}
/>
</PageContentBodyConnector>
</PageContent>