mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 18:42:25 -06:00 
			
		
		
		
	csv export, clean up export type branching
This commit is contained in:
		
					parent
					
						
							
								e478aeec0b
							
						
					
				
			
			
				commit
				
					
						c577348edf
					
				
			
		
					 1 changed files with 46 additions and 28 deletions
				
			
		| 
						 | 
					@ -109,30 +109,53 @@ module.exports = (build) => ({
 | 
				
			||||||
	}),
 | 
						}),
 | 
				
			||||||
	exportDomainList: build.mutation({
 | 
						exportDomainList: build.mutation({
 | 
				
			||||||
		queryFn: (formData, api, _extraOpts, baseQuery) => {
 | 
							queryFn: (formData, api, _extraOpts, baseQuery) => {
 | 
				
			||||||
 | 
								let process;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (formData.exportType == "json") {
 | 
				
			||||||
 | 
									process = {
 | 
				
			||||||
 | 
										transformEntry: (entry) => ({
 | 
				
			||||||
 | 
											domain: entry.domain,
 | 
				
			||||||
 | 
											public_comment: entry.public_comment,
 | 
				
			||||||
 | 
											obfuscate: entry.obfuscate
 | 
				
			||||||
 | 
										}),
 | 
				
			||||||
 | 
										stringify: (list) => JSON.stringify(list),
 | 
				
			||||||
 | 
										extension: ".json",
 | 
				
			||||||
 | 
										mime: "application/json"
 | 
				
			||||||
 | 
									};
 | 
				
			||||||
 | 
								} else if (formData.exportType == "csv") {
 | 
				
			||||||
 | 
									process = {
 | 
				
			||||||
 | 
										transformEntry: (entry) => [
 | 
				
			||||||
 | 
											entry.domain,
 | 
				
			||||||
 | 
											"suspend", // severity
 | 
				
			||||||
 | 
											false, // reject_media
 | 
				
			||||||
 | 
											false, // reject_reports
 | 
				
			||||||
 | 
											entry.public_comment,
 | 
				
			||||||
 | 
											entry.obfuscate ?? false
 | 
				
			||||||
 | 
										],
 | 
				
			||||||
 | 
										stringify: (list) => csv.unparse({
 | 
				
			||||||
 | 
											fields: "#domain,#severity,#reject_media,#reject_reports,#public_comment,#obfuscate".split(","),
 | 
				
			||||||
 | 
											data: list
 | 
				
			||||||
 | 
										}),
 | 
				
			||||||
 | 
										extension: ".csv",
 | 
				
			||||||
 | 
										mime: "text/csv"
 | 
				
			||||||
 | 
									};
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									process = {
 | 
				
			||||||
 | 
										transformEntry: (entry) => entry.domain,
 | 
				
			||||||
 | 
										stringify: (list) => list.join("\n"),
 | 
				
			||||||
 | 
										extension: ".txt",
 | 
				
			||||||
 | 
										mime: "text/plain"
 | 
				
			||||||
 | 
									};
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return Promise.try(() => {
 | 
								return Promise.try(() => {
 | 
				
			||||||
				return baseQuery({
 | 
									return baseQuery({
 | 
				
			||||||
					url: `/api/v1/admin/domain_blocks`
 | 
										url: `/api/v1/admin/domain_blocks`
 | 
				
			||||||
				});
 | 
									});
 | 
				
			||||||
			}).then(unwrapRes).then((blockedInstances) => {
 | 
								}).then(unwrapRes).then((blockedInstances) => {
 | 
				
			||||||
				return blockedInstances.map((entry) => {
 | 
									return blockedInstances.map(process.transformEntry);
 | 
				
			||||||
					if (formData.exportType == "json") {
 | 
					 | 
				
			||||||
						return {
 | 
					 | 
				
			||||||
							domain: entry.domain,
 | 
					 | 
				
			||||||
							public_comment: entry.public_comment
 | 
					 | 
				
			||||||
						};
 | 
					 | 
				
			||||||
					} else {
 | 
					 | 
				
			||||||
						return entry.domain;
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				});
 | 
					 | 
				
			||||||
			}).then((exportList) => {
 | 
								}).then((exportList) => {
 | 
				
			||||||
				if (formData.exportType == "json") {
 | 
									return process.stringify(exportList);
 | 
				
			||||||
					return JSON.stringify(exportList);
 | 
					 | 
				
			||||||
				} else if (formData.exportType == "csv") {
 | 
					 | 
				
			||||||
					let header = `#domain,#severity,#reject_media,#reject_reports,#public_comment,#obfuscate`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				} else {
 | 
					 | 
				
			||||||
					return exportList.join("\n");
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}).then((exportAsString) => {
 | 
								}).then((exportAsString) => {
 | 
				
			||||||
				if (formData.action == "export") {
 | 
									if (formData.action == "export") {
 | 
				
			||||||
					return {
 | 
										return {
 | 
				
			||||||
| 
						 | 
					@ -141,7 +164,6 @@ module.exports = (build) => ({
 | 
				
			||||||
				} else if (formData.action == "export-file") {
 | 
									} else if (formData.action == "export-file") {
 | 
				
			||||||
					let domain = new URL(api.getState().oauth.instance).host;
 | 
										let domain = new URL(api.getState().oauth.instance).host;
 | 
				
			||||||
					let date = new Date();
 | 
										let date = new Date();
 | 
				
			||||||
					let mime;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
					let filename = [
 | 
										let filename = [
 | 
				
			||||||
						domain,
 | 
											domain,
 | 
				
			||||||
| 
						 | 
					@ -151,15 +173,11 @@ module.exports = (build) => ({
 | 
				
			||||||
						date.getDate().toString().padStart(2, "0"),
 | 
											date.getDate().toString().padStart(2, "0"),
 | 
				
			||||||
					].join("-");
 | 
										].join("-");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					if (formData.exportType == "json") {
 | 
										fileDownload(
 | 
				
			||||||
						filename += ".json";
 | 
											exportAsString,
 | 
				
			||||||
						mime = "application/json";
 | 
											filename + process.extension,
 | 
				
			||||||
					} else {
 | 
											process.mime
 | 
				
			||||||
						filename += ".txt";
 | 
										);
 | 
				
			||||||
						mime = "text/plain";
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					fileDownload(exportAsString, filename, mime);
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				return { data: null };
 | 
									return { data: null };
 | 
				
			||||||
			}).catch((e) => {
 | 
								}).catch((e) => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue