form-with-data.jsx (1429B)
1 /* 2 GoToSocial 3 Copyright (C) GoToSocial Authors admin@gotosocial.org 4 SPDX-License-Identifier: AGPL-3.0-or-later 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 "use strict"; 21 22 const React = require("react"); 23 const { Error } = require("../../components/error"); 24 25 const Loading = require("../../components/loading"); 26 27 // Wrap Form component inside component that fires the RTK Query call, 28 // so Form will only be rendered when data is available to generate form-fields for 29 module.exports = function FormWithData({ dataQuery, DataForm, queryArg, ...formProps }) { 30 const { data, isLoading, isError, error } = dataQuery(queryArg); 31 32 if (isLoading) { 33 return ( 34 <div> 35 <Loading /> 36 </div> 37 ); 38 } else if (isError) { 39 return ( 40 <Error error={error} /> 41 ); 42 } else { 43 return <DataForm data={data} {...formProps} />; 44 } 45 };