From fc19ffba3881cf38d8a6a47a62c6ed5feff5aa4b Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Tue, 25 Apr 2023 21:04:50 -0500 Subject: Update report modal to use new groupings (close [APP-567]) (#533) --- src/view/com/modals/ReportPost.tsx | 107 +++++++++++++++++++++++++++++-------- 1 file changed, 84 insertions(+), 23 deletions(-) (limited to 'src/view/com/modals/ReportPost.tsx') diff --git a/src/view/com/modals/ReportPost.tsx b/src/view/com/modals/ReportPost.tsx index 01a132af0..c2c89202b 100644 --- a/src/view/com/modals/ReportPost.tsx +++ b/src/view/com/modals/ReportPost.tsx @@ -1,6 +1,7 @@ -import React, {useState} from 'react' +import React, {useState, useMemo} from 'react' import { ActivityIndicator, + Linking, StyleSheet, TouchableOpacity, View, @@ -16,14 +17,9 @@ import {ErrorMessage} from '../util/error/ErrorMessage' import {cleanError} from 'lib/strings/errors' import {usePalette} from 'lib/hooks/usePalette' -const ITEMS: RadioGroupItem[] = [ - {key: 'spam', label: 'Spam or excessive repeat posts'}, - {key: 'abuse', label: 'Abusive, rude, or hateful'}, - {key: 'copyright', label: 'Contains copyrighted material'}, - {key: 'illegal', label: 'Contains illegal content'}, -] +const DMCA_LINK = 'https://bsky.app/support/copyright' -export const snapPoints = ['50%'] +export const snapPoints = [500] export function Component({ postUri, @@ -38,6 +34,74 @@ export function Component({ const [error, setError] = useState('') const [issue, setIssue] = useState('') const onSelectIssue = (v: string) => setIssue(v) + + const ITEMS: RadioGroupItem[] = useMemo( + () => [ + { + key: ComAtprotoModerationDefs.REASONSPAM, + label: ( + + + Spam + + Excessive mentions or replies + + ), + }, + { + key: ComAtprotoModerationDefs.REASONSEXUAL, + label: ( + + + Unwanted Sexual Content + + + Nudity or pornography not labeled as such + + + ), + }, + { + key: '__copyright__', + label: ( + + + Copyright Violation + + Contains copyrighted material + + ), + }, + { + key: ComAtprotoModerationDefs.REASONVIOLATION, + label: ( + + + Illegal and Urgent + + + Glaring violations of law or terms of service + + + ), + }, + { + key: ComAtprotoModerationDefs.REASONOTHER, + label: ( + + + Other + + + An issue not included in these options + + + ), + }, + ], + [pal], + ) + const onPress = async () => { setError('') if (!issue) { @@ -45,22 +109,19 @@ export function Component({ } setIsProcessing(true) try { - // NOTE: we should update the lexicon of reasontype to include more options -prf - let reasonType = ComAtprotoModerationDefs.REASONOTHER - if (issue === 'spam') { - reasonType = ComAtprotoModerationDefs.REASONSPAM + if (issue === '__copyright__') { + Linking.openURL(DMCA_LINK) + } else { + await store.agent.createModerationReport({ + reasonType: issue, + subject: { + $type: 'com.atproto.repo.strongRef', + uri: postUri, + cid: postCid, + }, + }) + Toast.show("Thank you for your report! We'll look into it promptly.") } - const reason = ITEMS.find(item => item.key === issue)?.label || '' - await store.agent.createModerationReport({ - reasonType, - reason, - subject: { - $type: 'com.atproto.repo.strongRef', - uri: postUri, - cid: postCid, - }, - }) - Toast.show("Thank you for your report! We'll look into it promptly.") store.shell.closeModal() return } catch (e: any) { -- cgit 1.4.1