| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | /* | 
					
						
							|  |  |  | 	GoToSocial | 
					
						
							| 
									
										
										
										
											2023-03-12 18:49:06 +01:00
										 |  |  | 	Copyright (C) GoToSocial Authors admin@gotosocial.org | 
					
						
							|  |  |  | 	SPDX-License-Identifier: AGPL-3.0-or-later | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  | 	it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  | 	the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  | 	(at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | 	but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | 	GNU Affero General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  | 	along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-13 13:25:10 +02:00
										 |  |  | import React from "react"; | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | import { Link } from "wouter"; | 
					
						
							|  |  |  | import FormWithData from "../../../lib/form/form-with-data"; | 
					
						
							| 
									
										
										
										
											2024-04-13 13:25:10 +02:00
										 |  |  | import Username from "./username"; | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | import { useListReportsQuery } from "../../../lib/query/admin/reports"; | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | export function ReportOverview({ }) { | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 	return ( | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | 		<FormWithData | 
					
						
							|  |  |  | 			dataQuery={useListReportsQuery} | 
					
						
							|  |  |  | 			DataForm={ReportsList} | 
					
						
							|  |  |  | 		/> | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 	); | 
					
						
							| 
									
										
										
										
											2024-04-13 13:25:10 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | function ReportsList({ data: reports }) { | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 	return ( | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | 		<div className="reports"> | 
					
						
							|  |  |  | 			<div className="form-section-docs"> | 
					
						
							|  |  |  | 				<h1>Reports</h1> | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 				<p> | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | 					Here you can view and resolve reports made to your | 
					
						
							|  |  |  | 					instance, originating from local and remote users. | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 				</p> | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | 				<a | 
					
						
							|  |  |  | 					href="https://docs.gotosocial.org/en/latest/admin/settings/#reports" | 
					
						
							|  |  |  | 					target="_blank" | 
					
						
							|  |  |  | 					className="docslink" | 
					
						
							|  |  |  | 					rel="noreferrer" | 
					
						
							|  |  |  | 				> | 
					
						
							|  |  |  | 					Learn more about this (opens in a new tab) | 
					
						
							|  |  |  | 				</a> | 
					
						
							|  |  |  | 			</div> | 
					
						
							|  |  |  | 			<div className="list"> | 
					
						
							|  |  |  | 				{reports.map((report) => ( | 
					
						
							|  |  |  | 					<ReportEntry key={report.id} report={report} /> | 
					
						
							|  |  |  | 				))} | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 			</div> | 
					
						
							|  |  |  | 		</div> | 
					
						
							|  |  |  | 	); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function ReportEntry({ report }) { | 
					
						
							|  |  |  | 	const from = report.account; | 
					
						
							|  |  |  | 	const target = report.target_account; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	let comment = report.comment.length > 200 | 
					
						
							|  |  |  | 		? report.comment.slice(0, 200) + "..." | 
					
						
							|  |  |  | 		: report.comment; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return ( | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | 		<Link | 
					
						
							|  |  |  | 			to={`/${report.id}`} | 
					
						
							|  |  |  | 			className="nounderline" | 
					
						
							|  |  |  | 		> | 
					
						
							|  |  |  | 			<div className={`report entry${report.action_taken ? " resolved" : ""}`}> | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 				<div className="byline"> | 
					
						
							| 
									
										
										
										
											2023-02-09 09:26:35 +01:00
										 |  |  | 					<div className="usernames"> | 
					
						
							| 
									
										
										
										
											2024-04-25 18:24:24 +02:00
										 |  |  | 						<Username user={from} /> reported <Username user={target} /> | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 					</div> | 
					
						
							| 
									
										
										
										
											2023-12-27 11:23:52 +01:00
										 |  |  | 					<h3 className="report-status"> | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 						{report.action_taken ? "Resolved" : "Open"} | 
					
						
							|  |  |  | 					</h3> | 
					
						
							|  |  |  | 				</div> | 
					
						
							|  |  |  | 				<div className="details"> | 
					
						
							|  |  |  | 					<b>Created: </b> | 
					
						
							|  |  |  | 					<span>{new Date(report.created_at).toLocaleString()}</span> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					<b>Reason: </b> | 
					
						
							|  |  |  | 					{comment.length > 0 | 
					
						
							|  |  |  | 						? <p>{comment}</p> | 
					
						
							|  |  |  | 						: <i className="no-comment">none provided</i> | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				</div> | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | 			</div> | 
					
						
							| 
									
										
										
										
											2023-02-06 09:33:47 +01:00
										 |  |  | 		</Link> | 
					
						
							|  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2024-04-13 13:25:10 +02:00
										 |  |  | } |