Files
fluxer/fluxer_app/src/components/pages/report/optionDescriptors.ts
2026-01-02 19:27:51 +00:00

111 lines
4.2 KiB
TypeScript

/*
* Copyright (C) 2026 Fluxer Contributors
*
* This file is part of Fluxer.
*
* Fluxer 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.
*
* Fluxer 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 Fluxer. If not, see <https://www.gnu.org/licenses/>.
*/
import {msg} from '@lingui/core/macro';
import type {ReportType} from './types';
type MessageDescriptor = ReturnType<typeof msg>;
type SelectDescriptor = {
value: string;
label: MessageDescriptor;
};
type RadioDescriptor<T> = {
value: T;
name: MessageDescriptor;
};
export const REPORT_TYPE_OPTION_DESCRIPTORS: ReadonlyArray<RadioDescriptor<ReportType>> = [
{value: 'message', name: msg`Report a Message`},
{value: 'user', name: msg`Report a User Profile`},
{value: 'guild', name: msg`Report a Community`},
];
export const MESSAGE_CATEGORY_OPTIONS: ReadonlyArray<SelectDescriptor> = [
{value: '', label: msg`Select a category`},
{value: 'harassment', label: msg`Harassment or Bullying`},
{value: 'hate_speech', label: msg`Hate Speech`},
{value: 'violent_content', label: msg`Violent or Graphic Content`},
{value: 'spam', label: msg`Spam or Scam`},
{value: 'nsfw_violation', label: msg`NSFW Policy Violation`},
{value: 'illegal_activity', label: msg`Illegal Activity`},
{value: 'doxxing', label: msg`Sharing Personal Information`},
{value: 'self_harm', label: msg`Self-Harm or Suicide`},
{value: 'child_safety', label: msg`Child Safety Concerns`},
{value: 'malicious_links', label: msg`Malicious Links`},
{value: 'impersonation', label: msg`Impersonation`},
{value: 'other', label: msg`Other`},
];
export const USER_CATEGORY_OPTIONS: ReadonlyArray<SelectDescriptor> = [
{value: '', label: msg`Select a category`},
{value: 'harassment', label: msg`Harassment or Bullying`},
{value: 'hate_speech', label: msg`Hate Speech`},
{value: 'spam_account', label: msg`Spam Account`},
{value: 'impersonation', label: msg`Impersonation`},
{value: 'underage_user', label: msg`Underage User`},
{value: 'inappropriate_profile', label: msg`Inappropriate Profile`},
{value: 'other', label: msg`Other`},
];
export const GUILD_CATEGORY_OPTIONS: ReadonlyArray<SelectDescriptor> = [
{value: '', label: msg`Select a category`},
{value: 'harassment', label: msg`Harassment`},
{value: 'hate_speech', label: msg`Hate Speech`},
{value: 'extremist_community', label: msg`Extremist Community`},
{value: 'illegal_activity', label: msg`Illegal Activity`},
{value: 'child_safety', label: msg`Child Safety Concerns`},
{value: 'raid_coordination', label: msg`Raid Coordination`},
{value: 'spam', label: msg`Spam or Scam Community`},
{value: 'malware_distribution', label: msg`Malware Distribution`},
{value: 'other', label: msg`Other`},
];
export const COUNTRY_OPTIONS: ReadonlyArray<SelectDescriptor> = [
{value: '', label: msg`Select a country`},
{value: 'AT', label: msg`Austria`},
{value: 'BE', label: msg`Belgium`},
{value: 'BG', label: msg`Bulgaria`},
{value: 'HR', label: msg`Croatia`},
{value: 'CY', label: msg`Cyprus`},
{value: 'CZ', label: msg`Czech Republic`},
{value: 'DK', label: msg`Denmark`},
{value: 'EE', label: msg`Estonia`},
{value: 'FI', label: msg`Finland`},
{value: 'FR', label: msg`France`},
{value: 'DE', label: msg`Germany`},
{value: 'GR', label: msg`Greece`},
{value: 'HU', label: msg`Hungary`},
{value: 'IE', label: msg`Ireland`},
{value: 'IT', label: msg`Italy`},
{value: 'LV', label: msg`Latvia`},
{value: 'LT', label: msg`Lithuania`},
{value: 'LU', label: msg`Luxembourg`},
{value: 'MT', label: msg`Malta`},
{value: 'NL', label: msg`Netherlands`},
{value: 'PL', label: msg`Poland`},
{value: 'PT', label: msg`Portugal`},
{value: 'RO', label: msg`Romania`},
{value: 'SK', label: msg`Slovakia`},
{value: 'SI', label: msg`Slovenia`},
{value: 'ES', label: msg`Spain`},
{value: 'SE', label: msg`Sweden`},
];