gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

get-form-mutations.js (1483B)


      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 syncpipe = require("syncpipe");
     23 
     24 module.exports = function getFormMutations(form, { changedOnly }) {
     25 	let updatedFields = [];
     26 	return {
     27 		updatedFields,
     28 		mutationData: syncpipe(form, [
     29 			(_) => Object.values(_),
     30 			(_) => _.map((field) => {
     31 				if (field.selectedValues != undefined) {
     32 					let selected = field.selectedValues();
     33 					if (!changedOnly || selected.length > 0) {
     34 						updatedFields.push(field);
     35 						return [field.name, selected];
     36 					}
     37 				} else if (!changedOnly || field.hasChanged()) {
     38 					updatedFields.push(field);
     39 					return [field.name, field.value];
     40 				}
     41 				return null;
     42 			}),
     43 			(_) => _.filter((value) => value != null),
     44 			(_) => Object.fromEntries(_)
     45 		])
     46 	};
     47 };